한국어English日本語简体中文繁體中文DeutschไทยTiếng ViệtРусскийPortuguês (Brasil)EspañolBahasa Indonesia

Buku Putih Lag Game › L12 Database

Failover DB Database failover

ID penyebab db-failover · Penanggung jawab utama Infrastruktur DB (Tim Infrastruktur) · Turut terlibat Pengembangan server (Tim Pengembang Game)

Buka kartu interaktif dengan gambar dan simulasi →

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)

Gejala
Aksi hilang / rollback, Freeze, Disconnect, Tidak bisa masuk / loading tanpa henti
Faktor
Stall, Packet loss
Siapa yang mengalami
Seluruh server
Kapan
Sesekali secara acak
Penanggung jawab
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
Sarana pemeriksaan
Tools infrastruktur (tanpa perlu kode game)
Kasus nyata
Riot Games 2021: Gangguan 5 jam di League of Legends EUW: satu DB pendukung menghentikan seluruh server

Sumber

  1. Failing over a Multi-AZ DB instance for Amazon RDS AWS
    Failover Multi-AZ biasanya 60–120 detik; setelah failover koneksi harus dibuka ulang, dan TTL cache DNS JVM dianjurkan maksimal 60 detik
  2. High availability for Amazon Aurora AWS
    Selama gangguan, pembacaan dan penulisan gagal; biasanya pulih dalam 60 detik (sering dalam 30 detik)
  3. Semisynchronous Replication MySQL
    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
  4. 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
  5. Amazon RDS event categories and event messages AWS
    RDS-EVENT-0013: failover Multi-AZ dimulai, RDS-EVENT-0049: failover Multi-AZ selesai
  6. Amazon CloudWatch metrics for Amazon RDS AWS
    ReplicaLag: seberapa lama (detik) read replica tertinggal dari instance sumber
  7. The Cumulative Statistics System (PostgreSQL Documentation) PostgreSQL
    replay_lag di pg_stat_replication: waktu sejak server primer menulis WAL sampai replika melaporkan bahwa WAL telah diterapkan

Lihat juga

Lapisan yang sama: L12 Database

Penyebab di lapisan lain dengan gejala yang sama (Aksi hilang / rollback)

Lihat kartu interaktif dengan gambar dan simulasi