Paket 2 · Praktik LanjutanModul F — Database, Backup & Disaster Recovery

Database Reliability & High Availability

Replikasi, failover otomatis, quorum, split brain, routing koneksi, dan perawatan database tanpa downtime.

Database yang andal mampu menangani kegagalan tanpa kehilangan data dan tanpa downtime panjang. Ini membutuhkan replikasi, failover, dan prosedur operasional yang teruji.

Replikasi

ModeCaraTrade-off
AsynchronousPrimary tidak menunggu replicaCepat, bisa kehilangan data saat failover
SynchronousPrimary menunggu konfirmasi replicaAman, latency lebih tinggi
Semi-syncSebagian replicaKompromi

PostgreSQL streaming replication

Di primary:

wal_level = replica
max_wal_senders = 10
wal_keep_size = 1GB

Di replica:

pg_basebackup -h primary -D /var/lib/postgresql/16/main -U replicator -Fp -Xs -P -R

-R membuat konfigurasi standby otomatis.

Cek lag:

SELECT client_addr, state, sent_lsn, replay_lsn,
       pg_wal_lsn_diff(sent_lsn, replay_lsn) AS lag_bytes
FROM pg_stat_replication;

Failover

Manual

  1. Pastikan primary benar-benar mati.
  2. Promosikan replica.
  3. Arahkan koneksi aplikasi.
  4. Verifikasi data.
  5. Bangun replica baru.
pg_ctl promote -D /var/lib/postgresql/16/main

Otomatis

Tool seperti Patroni, repmgr, atau layanan cloud mengelola failover.

Komponen utama:

  • Consensus (etcd/Consul) untuk memilih leader.
  • Health check.
  • Fencing untuk mencegah dua primary.
  • VIP/DNS untuk routing.

Split brain

Split brain terjadi saat dua node mengira dirinya primary. Ini menyebabkan divergensi data.

Pencegahan:

  • Quorum.
  • Fencing (STONITH).
  • Jangan mempromosikan node tanpa memastikan primary lama mati.
  • Gunakan tool yang matang.

Failover otomatis tanpa fencing berbahaya

Jika primary lama masih hidup dan menerima write, dua primary dapat menulis data berbeda. Lebih baik failover manual yang terkontrol daripada otomatis tanpa fencing.

Routing koneksi

Aplikasi perlu tahu ke mana harus menulis dan membaca.

Opsi:

  • Environment variable DB_PRIMARY dan DB_REPLICA.
  • HAProxy yang memisahkan port read/write.
  • PgBouncer di depan primary/replica.
  • Service discovery/DNS internal.
App write ──▶ HAProxy :5432 ──▶ primary
App read  ──▶ HAProxy :5433 ──▶ replica

Perawatan tanpa downtime

  • Jalankan VACUUM/ANALYZE rutin.
  • Monitor bloat.
  • Reindex dengan CONCURRENTLY.
  • Failover terkontrol untuk patching.
  • Update versi minor secara berkala.
REINDEX INDEX CONCURRENTLY idx_orders_user_created;

Upgrade versi

  1. Baca release notes.
  2. Uji di staging.
  3. Backup penuh.
  4. Gunakan logical replication atau pg_upgrade.
  5. Siapkan rollback.
  6. Lakukan saat traffic rendah.
  7. Verifikasi performa dan data.

Monitoring reliability

MetrikTarget
Replication lag< beberapa detik
Failover timeSesuai RTO
Backup sukses100%
Restore testBerkala
KoneksiDi bawah batas
Disk< 80%
Deadlock/lockRendah

Game day

Latih skenario:

  1. Matikan primary.
  2. Promosikan replica.
  3. Arahkan aplikasi.
  4. Pulihkan primary lama sebagai replica.
  5. Ukur downtime dan data loss.

Catat hasil dan perbaiki runbook.

Ringkasan

  • Replikasi meningkatkan read dan kesiapan failover.
  • Failover otomatis membutuhkan consensus dan fencing.
  • Routing read/write harus jelas.
  • Perawatan dan upgrade harus direncanakan.
  • Uji failover sebelum insiden nyata.

Selanjutnya

On this page