Selama DB primer mati dan layanan dialihkan ke DB cadangan, penulisan tidak bisa dilakukan, dan data terakhir yang belum sempat direplikasi bisa hilang.
Mengapa DB primer mengalami gangguan sehingga DB cadangan dipromosikan → Akibatnya Selama peralihan, penulisan tidak bisa dilakukan selama beberapa detik hingga beberapa menit; dengan replikasi asinkron, data yang belum direplikasi bisa hilang → Di layar Semua penyimpanan gagal sesaat, item dan EXP kembali ke kondisi sebelumnya (rollback)
Penanggung jawab utama Infrastruktur DB (Tim Infrastruktur) · Turut terlibat Pengembangan server (Tim Pengembang Game)
Tugas Tim Pengembang Game
Buat penyimpanan yang bisa dicoba ulang, atur agar koneksi yang terputus cepat dibuang lalu dibuka ulang ke alamat baru (connection pool, cache DNS), pastikan koneksi ulang berjalan saat latihan failover.
Tugas Tim Infrastruktur
Gunakan replikasi sinkron atau semi-sinkron (dengan konsekuensi latensi tulis bertambah), lakukan latihan failover, pantau waktu failover dan replication lag.
Kisaran angka
Failover otomatis pada DB terkelola biasanya memakan puluhan detik hingga 2 menit. Dengan replikasi asinkron, penyimpanan terbaru bisa hilang sebanyak replication lag (kurang dari 1 detik hingga beberapa detik).
Di grafik
Koneksi putus serentak · Jumlah koneksi DB, jumlah error penulisan
Yang diperiksa
Letakkan catatan failover di sisi DB (RDS: event RDS-EVENT-0013 failover dimulai dan RDS-EVENT-0049 failover selesai; DB yang dikelola sendiri: log promosi) bersama jumlah koneksi DB dan jumlah error koneksi server game dalam satu grafik. Jika memakai replikasi asinkron, periksa juga replication lag sesaat sebelum gangguan (RDS ReplicaLag, replay_lag di pg_stat_replication PostgreSQL)
Cocok jika
Kegagalan penyimpanan terkumpul di satu rentang waktu yang bertepatan dengan periode antara mulai dan selesainya failover. Banyaknya data yang kembali ke kondisi lama kira-kira sama dengan replication lag sesaat sebelum gangguan. Server game yang masih error setelah failover selesai berarti terus memakai koneksi yang dibuka ke alamat lama
Tidak cocok jika
Koneksi terputus pada waktu tanpa catatan failover: lebih mungkin masalah jaringan atau DB kelebihan beban
High availability for Amazon AuroraAWS Selama gangguan, pembacaan dan penulisan gagal; biasanya pulih dalam 60 detik (sering dalam 30 detik)
Semisynchronous ReplicationMySQL Dengan replikasi asinkron, transaksi yang sudah di-commit bisa tidak ada di replika jika DB primer mati; replikasi semi-sinkron menguranginya dengan menunggu konfirmasi terima dari satu replika, dengan konsekuensi latensi bertambah
Log-Shipping Standby Servers (PostgreSQL Documentation)PostgreSQL Log shipping berjalan asinkron, sehingga transaksi yang belum terkirim hilang jika server primer mati; lag streaming replication biasanya kurang dari 1 detik