Pendahuluan MongoDB Replica Set
Apa itu Replica Set di MongoDB?
Replica Set adalah fitur fundamental MongoDB yang memungkinkan Anda membuat beberapa salinan (replikasi) dari data yang sama pada beberapa server MongoDB. Ini adalah solusi bawaan MongoDB untuk high availability dan disaster recovery, sekaligus mendukung operasi baca yang lebih scalable.
Komponen Utama Replica Set
Sebuah Replica Set terdiri dari tiga komponen kunci:
1. Primary Node
- Hanya ada satu primary dalam satu waktu
- Menangani semua operasi tulis (write operations)
- Mencatat semua perubahan dalam oplog (operations log)
- Dapat menangani operasi baca
2. Secondary Nodes
- Menyimpan salinan data dari primary
- Dapat berjumlah satu atau lebih
- Secara otomatis mereplikasi data dari primary
- Dapat digunakan untuk operasi baca (jika dikonfigurasi)
3. Arbiter Node (Opsional)
- Tidak menyimpan data
- Hanya berpartisipasi dalam pemilihan primary
- Berguna untuk menjaga jumlah suara ganjil dalam voting
Arsitektur Dasar Replica Set
Contoh Replica Set dengan 3 Anggota:
┌─────────────────┐
│ Primary Node │ ← Menangani semua tulis
│ (Server 1) │
└─────────────────┘
│
↓ Replikasi
┌─────────────────┐ ┌─────────────────┐
│ Secondary Node │ │ Secondary Node │
│ (Server 2) │ │ (Server 3) │
└─────────────────┘ └─────────────────┘
Manfaat Menggunakan Replica Set
1. High Availability
- Automatic Failover: Jika primary gagal, secondary akan otomatis dipilih menjadi primary baru
- Minimal Downtime: Transisi terjadi dalam hitungan detik
2. Disaster Recovery
- Data direplikasi ke beberapa server/lokasi
- Recovery lebih cepat dari backup
3. Load Balancing untuk Operasi Baca
- Secondary dapat menangani query baca
- Mengurangi beban pada primary
4. Maintenance tanpa Downtime
- Dapat melakukan maintenance pada secondary tanpa mengganggu layanan
- Rolling upgrades lebih aman
Cara Kerja Replica Set
Proses Replikasi
- Primary menerima operasi tulis
- Primary mencatat operasi di oplog
- Secondary menyalin dan menerapkan oplog dari primary
- Secondary mengkonfirmasi keberhasilan replikasi
Pemilihan Primary (Election)
- Terjadi ketika primary tidak tersedia
- Anggota replica set melakukan voting
- Node dengan suara terbanyak menjadi primary baru
- Memerlukan mayoritas suara (N/2 + 1)
Membuat Replica Set Sederhana
Langkah 1: Mulai MongoDB Instances
# Mulai tiga instance MongoDB pada port berbeda mongod --replSet "rs0" --port 27017 --dbpath /data/db1 mongod --replSet "rs0" --port 27018 --dbpath /data/db2 mongod --replSet "rs0" --port 27019 --dbpath /data/db3
Langkah 2: Inisialisasi Replica Set
Hubungkan ke salah satu instance:
// Masuk ke mongo shell pada instance pertama
mongo --port 27017
// Inisialisasi replica set
rs.initiate({
_id: "rs0",
members: [
{ _id: 0, host: "localhost:27017" },
{ _id: 1, host: "localhost:27018" },
{ _id: 2, host: "localhost:27019" }
]
})
Langkah 3: Verifikasi Status
// Periksa status replica set rs.status() // Periksa konfigurasi rs.conf()
Konfigurasi Replica Set
Tipe Anggota Replica Set
// Contoh konfigurasi dengan berbagai tipe anggota
rs.reconfig({
_id: "rs0",
members: [
// Priority 2: lebih diprioritaskan menjadi primary
{ _id: 0, host: "server1:27017", priority: 2 },
// Default priority: 1
{ _id: 1, host: "server2:27017" },
// Hidden: tidak terlihat oleh aplikasi
{ _id: 2, host: "server3:27017", hidden: true },
// Arbiter: hanya voting, tidak menyimpan data
{ _id: 3, host: "server4:27017", arbiterOnly: true }
]
})
Best Practices Replica Set
1. Jumlah Anggota
- Minimum 3 anggota untuk toleransi kegagalan
- Jumlah ganjil untuk menghindari voting tie
- Maksimum 50 anggota (7 voting, 43 non-voting)
2. Distribusi Geografis
- Letakkan anggota di data center berbeda
- Pertimbangkan latensi jaringan
3. Monitoring
- Pantau replication lag
- Monitor oplog size
- Lacak status kesehatan anggota
4. Backup Reguler
- Gunakan
mongodumppada secondary - Simpan backup di lokasi aman
Troubleshooting Umum
Masalah dan Solusi
- Replication Lag
- Periksa bandwidth jaringan
- Optimasi query pada primary
- Tambah kapasitas secondary
- Election Gagal
- Pastikan konektivitas jaringan
- Verifikasi konfigurasi voting
- Periksa firewall settings
- Secondary Tidak Sinkron
- Periksa oplog size
- Verifikasi storage capacity
- Coba resync manual
Kesimpulan
Replica Set adalah solusi elegant MongoDB untuk kebutuhan high availability dan disaster recovery. Dengan memahami dasar-dasar replica set, Anda dapat:
- Meningkatkan availability aplikasi Anda
- Melindungi data dari kehilangan
- Meningkatkan performa operasi baca
- Melakukan maintenance tanpa downtime
Mulailah dengan setup sederhana 3-node, pahami pola failover-nya, dan secara bertahap implementasikan di lingkungan production dengan konfigurasi yang lebih kompleks sesuai kebutuhan bisnis Anda.