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

  1. Primary menerima operasi tulis
  2. Primary mencatat operasi di oplog
  3. Secondary menyalin dan menerapkan oplog dari primary
  4. 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 mongodump pada secondary
  • Simpan backup di lokasi aman

Troubleshooting Umum

Masalah dan Solusi

  1. Replication Lag
    • Periksa bandwidth jaringan
    • Optimasi query pada primary
    • Tambah kapasitas secondary
  2. Election Gagal
    • Pastikan konektivitas jaringan
    • Verifikasi konfigurasi voting
    • Periksa firewall settings
  3. 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.