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

Buku Putih Lag Game › L12 Database

Replication lag Replication lag

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

Buka kartu interaktif dengan gambar dan simulasi →

Penulisan dilakukan ke DB primer dan pembacaan dari replika. Jika replika tertinggal, data yang baru ditulis belum terlihat.

Mengapa Penulisan menumpuk di DB primer sehingga replika tertinggal beberapa detik → Akibatnya Data yang baru disimpan belum ada saat dibaca dari replika → Di layar Item yang baru dibeli tidak terlihat, harga di market masih nilai lama, bug pemberian ganda

Gejala
Aksi hilang / rollback
Faktor
Latensi
Siapa yang mengalami
Fitur tertentu saja
Kapan
Saat banyak pemain berkumpul, Jam sibuk malam hari
Penanggung jawab
Penanggung jawab utama Infrastruktur DB (Tim Infrastruktur) · Turut terlibat Pengembangan server (Tim Pengembang Game)
Tugas Tim Pengembang Game
Baca data yang baru ditulis dari DB primer, periksa status pemberian dan berikan item dalam satu transaksi di DB primer (cegah duplikasi dengan unique key atau UPDATE bersyarat).
Tugas Tim Infrastruktur
Pasang alert replication lag, beri replika spesifikasi minimal setara DB primer dan terapkan replikasi paralel, jalankan penghapusan massal dalam potongan kecil, kelola query agregasi yang berjalan lama di replika.
Di grafik
Naik mengikuti beban · Replication lag (detik)
Yang diperiksa
MySQL: periksa Seconds_Behind_Source di SHOW REPLICA STATUS pada replika (versi sebelum 8.0.22: SHOW SLAVE STATUS). PostgreSQL: periksa write_lag, flush_lag, dan replay_lag di pg_stat_replication pada server primer. RDS: periksa ReplicaLag
Cocok jika
Pada waktu laporan “tidak terlihat”, replication lag mencapai beberapa detik atau lebih, dan setelah lag itu hilang, data terlihat normal. Lag membesar saat lonjakan penulisan, penghapusan massal, atau query agregasi panjang di replika
Tidak cocok jika
Replication lag mendekati 0 tetapi data tetap tidak terlihat: lebih mungkin cache atau sinkronisasi di server game
Sarana pemeriksaan
Tools infrastruktur (tanpa perlu kode game)
Pelajari lebih lanjut
Replika bisa tertinggal walaupun penulisan tidak banyak. Satu penghapusan massal yang memakan 10 menit di DB primer dijalankan ulang di replika, sehingga replika tertinggal selama itu. Query agregasi yang berjalan lama di replika juga memperlambat replika mengejar ketertinggalan.

Sumber

  1. SHOW REPLICA STATUS Statement MySQL
    Seconds_Behind_Source: selisih antara waktu event yang sedang diterapkan replika dan waktu event itu dicatat di DB primer (replication lag)
  2. Replica Server Options and Variables MySQL
    Dengan replica_parallel_workers, beberapa thread menerapkan transaksi secara paralel (default 4; jika 0, satu thread menerapkannya berurutan)
  3. Log-Shipping Standby Servers (PostgreSQL Documentation) PostgreSQL
    Streaming replication secara default asinkron, sehingga ada jeda antara commit dan penerapannya di replika (biasanya kurang dari 1 detik jika replika mampu mengikuti)
  4. MySQL 8.0 Reference Manual: SHOW REPLICA STATUS Statement MySQL
    Mulai 8.0.22, SHOW REPLICA STATUS menggantikan SHOW SLAVE STATUS; versi sebelumnya memakai SHOW SLAVE STATUS
  5. The Cumulative Statistics System (PostgreSQL Documentation) PostgreSQL
    write_lag, flush_lag, dan replay_lag di pg_stat_replication: waktu sejak server primer menulis WAL sampai replika melaporkan bahwa WAL telah ditulis, disimpan ke disk (flush), dan diterapkan
  6. Amazon CloudWatch metrics for Amazon RDS AWS
    ReplicaLag: seberapa lama (detik) read replica tertinggal dari instance sumber

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