MongoDB - Replikasi
Hai, para entusiasta basis data yang sedang berkembang! Hari ini, kita akan mendalamkan dunia yang menarik dari replikasi MongoDB. Sebagai guru ilmu komputer yang ramah di lingkungan tetangga Anda, saya sangat gembira untuk mengantar Anda dalam perjalanan ini. Jangan khawatir jika Anda baru dalam programming – kita akan mulai dari dasar dan maju secara bertahap. Jadi, ambil secangkir kopi (atau teh, jika itu hal Anda), dan mari kita mulai!
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 butuh replikasi dalam basis data!
Replikasi di MongoDB mirip seperti membuat beberapa salinan album foto itu dan menyimpannya di tempat yang berbeda. Berikut mengapa hal ini sangat penting:
- Ketersediaan Tinggi: Jika satu server turun, data Anda masih dapat diakses dari server lain.
- Keselamatan Data: Beberapa salinan berarti data Anda aman bahkan jika satu salinan rusak.
- Peningkatan Kinerja Baca: Lebih banyak salinan memungkinkan operasi baca tersebar, membuat basis data Anda lebih cepat.
- Pemulihan Bencana: Dalam kasus bencana besar, Anda dapat memulihkan data Anda dari lokasi lain.
Cara Kerja Replikasi di MongoDB
Sekarang, mari kita mengerti bagaimana MongoDB melakukan sihir replikasi ini. MongoDB menggunakan konsep yang disebut "Replica Sets". Berikan contoh satu set replika sebagai grup server MongoDB yang menyimpan semua data yang sama.
Berikut adalah diagram sederhana untuk meng visualisasikan ini:
[Primary]
/|\
/ | \
/ | \
/ | \
[Secondary][Secondary]
- Node Primer: Ini adalah server utama yang menerima semua operasi tulis.
- Node Sekunder: Ini adalah salinan node primer. Mereka replikasi data node primer untuk tetap up-to-date.
Ketika Anda menulis data ke node primer, ia mencatat 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 Primer
def tulis_data(data):
simpan_data(data)
catat_operasi(data)
# Pada Node Sekunder
while True:
operasi_baru = ambil_operasi_baru_dari_primer()
for operasi in operasi_baru:
terapkan_operasi(operasi)
Fitur Set Replika
Replica sets MongoDB datang dengan beberapa fitur yang menarik yang membuat hidup kita mudah:
- Ganti Otomatis: Jika node primer gagal, node sekunder secara otomatis menjadi primer baru.
- Pemulihan Otomatis: Ketika node yang gagal kembali online, ia secara otomatis sinkronisasi dengan primer saat ini.
- Konfigurasi Fleksibel: Anda dapat memiliki jenis node yang berbeda di dalam satu set replika, seperti node tersembunyi atau node tertunda.
mari kita lihat tabel jenis node yang berbeda:
Jenis Node | Deskripsi | Kasus Penggunaan |
---|---|---|
Regular Secondary | Standar replika primer | Replikasi umum dan ganti |
Hidden | Tidak terlihat oleh aplikasi | Cadangan khusus atau pelaporan |
Delayed | Replikasi data dengan penundaan | Perlindungan terhadap kesalahan manusia |
Arbiter | Tidak menyimpan data, hanya memilih dalam pemilihan | Menjaga jumlah node ganjil |
Menyiapkan Set Replika
Sekarang, mari kita merusak tangan dan mengatur set replika! Kita akan membuat set replika 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
Buat koneksi ke salah satu instance dan inisiasi set replika:
rs.initiate({
_id: "myrs",
members: [
{ _id: 0, host: "localhost:27017" },
{ _id: 1, host: "localhost:27018" },
{ _id: 2, host: "localhost:27019" }
]
})
Kode ini membuat set replika bernama "myrs" dengan tiga anggota. Fungsi rs.initiate()
mengatur konfigurasi set replika.
Menambahkan Anggota ke Set Replika
Apa jika Anda ingin menambahkan lebih banyak anggota ke set replika Anda kemudian? Tidak masalah! MongoDB membuat hal ini mudah untuk menambahkan anggota baru secara langsung.
Berikut adalah cara Anda menambahkan anggota baru:
rs.add("localhost:27020")
Perintah ini menambahkan anggota baru yang berjalan di port 27020 ke set replika kita.
Anda juga dapat menghapus anggota jika diperlukan:
rs.remove("localhost:27020")
Ingat, selalu baik untuk memiliki jumlah anggota voting ganjil di dalam set replika. Ini membantu dalam pemilihan saat memilih primer baru.
Dan itu dia, teman-teman! Kita telah melihat dasar-dasar replikasi MongoDB. Dari memahami mengapa kita butuh replikasi, hingga mengatur set replika sendiri, kita telah mencapai jarak yang jauh.
Ingat, latihan membuat sempurna. Cobalah mengatur set replika Anda sendiri, mainkan dengan konfigurasi yang berbeda, dan jangan takut untuk membuat kesalahan. Itu adalah bagaimana kita belajar!
Seperti yang biasa dibilang oleh dosen basis data saya, "Dalam dunia data, redundantensi bukanlah bug, itu fitur!" Selamat replikasi!
Credits: Image by storyset