MongoDB - Replikasi

Hai, para entusiastanya basisdata yang sedang berkembang! Hari ini, kita akan melihat dunia yang menarik tentang replikasi MongoDB. Sebagai guru ilmu komputer yang ramah di lingkungan sekitar Anda, saya sangat gembira untuk menghidahkan Anda dalam perjalanan ini. Jangan khawatir jika Anda baru dalam pemrograman - kita akan mulai dari dasar dan naik tingkat perlahan-lahan. Jadi, ambillah secangkir kopi (atau teh, jika itu hal Anda), dan mari kita mulai!

MongoDB - Replication

Mengapa Replikasi?

Imaginasi Anda menyimpan semua foto keluarga yang berharga Anda di dalam satu album. Apa yang terjadi jika album itu rusak atau hilang? Pemikiran yang menakutkan, kan? Well, itu tepatnya mengapa kita memerlukan replikasi dalam basisdata!

Replikasi di MongoDB mirip dengan membuat beberapa salinan album foto itu dan menyimpannya di tempat yang berbeda. Berikut mengapa ini sangat penting:

  1. Ketersediaan Tinggi: Jika satu server turun, data Anda masih bisa diakses dari server lain.
  2. Keselamatan Data: Beberapa salinan berarti data Anda aman bahkan jika satu salinan rusak.
  3. Peningkatan Kinerja Baca: Lebih banyak salinan memungkinkan operasi baca tersebar, membuat basisdata Anda lebih cepat.
  4. Pemulihan Bencana: Dalam kasus bencana besar, Anda dapat memulihkan data Anda dari lokasi lain.

Cara Kerja Replikasi di MongoDB

Sekarang, mari kita memahami bagaimana MongoDB melakukan sihir replikasi ini. MongoDB menggunakan konsep yang disebut "Replica Sets". Bayangkan replica set sebagai grup server MongoDB yang menyimpan semua data yang sama.

Berikut adalah diagram sederhana untuk meng gambarkan ini:

[Primari]
/|\
/ | \
/  |  \
/   |   \
[Secondary][Secondary]
  1. Node Primari: Ini adalah server utama yang menerima semua operasi tulis.
  2. Node Secondary: Ini adalah salinan node primari. Mereka replikasi data primari untuk tetap up-to-date.

Ketika Anda menulis data ke node primari, ia merekam operasi ini di "oplog" (log operasi). Node sekunder kemudian menyalin oplog ini dan menerapkan operasi yang sama ke data mereka sendiri.

Berikut adalah pseudocode sederhana untuk mengilustrasikan proses ini:

# Pada Node Primari
def tulis_data(data):
simpan_data(data)
catat_operasi(data)

# Pada Node Secondary
while True:
operasi_baru = ambil_operasi_baru_dari_primari()
for operasi in operasi_baru:
terapkan_operasi(operasi)

Fitur Replica Set

Replica set MongoDB datang dengan beberapa fitur menarik yang membuat hidup kita mudah:

  1. Pemutusan Otomatis: Jika node primari gagal, node sekunder secara otomatis menjadi primari baru.
  2. Pemulihan Otomatis: Ketika node yang gagal kembali online, ia secara otomatis menyinkronkan dengan primari saat ini.
  3. Konfigurasi Fleksibel: Anda dapat memiliki jenis node yang berbeda dalam satu replica set, seperti node tersembunyi atau node tertunda.

Mari kita lihat tabel jenis node yang berbeda:

Tipe Node Deskripsi Kasus Penggunaan
Regular Secondary Standar replika primari Replikasi umum dan pemutusan
Hidden Tak terlihat oleh aplikasi Cadangan khusus atau pelaporan
Delayed Replikasi data dengan penundaan Perlindungan terhadap kesalahan manusia
Arbiter Tidak menyimpan data, hanya memberi suara dalam pemilihan Menjaga jumlah node ganjil

Mengatur Replica Set

Sekarang, mari kita merusak tangan dan mengatur replica set! Kita akan membuat replica set tiga node sederhana di mesin lokal Anda.

Pertama, buat tiga direktori data terpisah:

mkdir -p /data/rs1 /data/rs2 /data/rs3

Sekarang, mulai tiga instance mongod:

mongod --replSet myrs --port 27017 --dbpath /data/rs1
mongod --replSet myrs --port 27018 --dbpath /data/rs2
mongod --replSet myrs --port 27019 --dbpath /data/rs3

Hubungkan ke salah satu instance dan inisiasi replica set:

rs.initiate({
_id: "myrs",
members: [
{ _id: 0, host: "localhost:27017" },
{ _id: 1, host: "localhost:27018" },
{ _id: 2, host: "localhost:27019" }
]
})

Kode ini membuat replica set bernama "myrs" dengan tiga anggota. Fungsi rs.initiate() mengatur konfigurasi replica set.

Menambah Anggota ke Replica Set

Apa bila Anda ingin menambahkan lebih banyak anggota ke replica set Anda kemudian? Tidak masalah! MongoDB membuat hal ini mudah untuk menambahkan anggota baru secara fly.

Berikut adalah cara Anda menambahkan anggota baru:

rs.add("localhost:27020")

Perintah ini menambahkan anggota baru yang berjalan di port 27020 ke replica set Anda yang ada.

Anda juga dapat menghapus anggota jika diperlukan:

rs.remove("localhost:27020")

Ingatlah, selalu baik untuk memiliki jumlah ganjil anggota voting dalam replica set. Ini membantu dalam pemilihan saat memilih primari baru.

Dan begitu pun, teman-teman! Kita telah meliputi dasar-dasar replikasi MongoDB. Dari memahami mengapa kita memerlukan replikasi, hingga mengatur replica set kita sendiri, kita telah mencapai jarak yang jauh.

Ingat, latihan membuat sempurna. Cobalah mengatur replica set Anda sendiri, mainkan dengan konfigurasi yang berbeda, dan jangan takut untuk membuat kesalahan. Itu adalah cara kita belajar!

Seperti yang biasa dibilang oleh profesor basisdata lama saya, "Dalam dunia data, redundant adalah bukan bug, itu fitur!" Semoga sukses dalam replikasi!

Credits: Image by storyset