Pernyataan DDL berdurasi panjang—seperti ALTER TABLE pada tabel besar—dapat menyebabkan database secondary tertahan selama ratusan detik sambil menunggu database primary menyelesaikan dan melakukan commit. Replikasi binlog real-time (BRR) menghilangkan penundaan ini dengan memberi tahu secondary untuk segera mengeksekusi pernyataan DDL secara paralel, alih-alih menunggu sinyal commit. Dalam pengujian benchmark pada tabel berukuran 23 GB dengan 80 juta baris, secondary mengalami latensi replikasi selama 277 detik tanpa BRR dan nol latensi saat BRR diaktifkan.
Cara kerja
MySQL menggunakan replikasi logis: setelah transaksi di-commit di database primary, event binlog yang dihasilkan dikirim ke secondary untuk diputar ulang. Untuk pernyataan DDL, muatan binlog sangat kecil (satu Gtid_log_event dan satu Query_log_event), sehingga waktu transmisi dapat diabaikan. Hambatan utamanya adalah waktu eksekusi DDL itu sendiri—secondary tidak dapat memulai hingga primary melakukan commit.
BRR mengatasi masalah ini dari sumbernya. Saat primary memulai pernyataan DDL, ia segera mengirim event binlog Brr—jenis event baru yang diperkenalkan oleh fitur ini—ke secondary melalui transmisi real-time. Secondary kemudian mulai mengeksekusi DDL secara paralel menggunakan thread Brr Worker khusus, yang independen dari thread Worker standar MySQL. Setelah secondary menyelesaikan sebagian besar pekerjaan DDL, ia menunggu hasil dari primary:
-
Jika primary berhasil, ia memberi sinyal kepada secondary untuk melakukan commit.
-
Jika primary gagal, ia memberi sinyal kepada secondary untuk melakukan rollback.
Total latensi replikasi berkurang menjadi satu kali transmisi jaringan ke database secondary ditambah waktu commit DDL—biasanya puluhan milidetik.
Event binlog Brr tidak ditulis ke binlog atau relay log, sehingga tidak memengaruhi sistem downstream yang mengonsumsi log biner.
Prasyarat
Sebelum mengaktifkan BRR, pastikan:
-
Instans menjalankan RDS for MySQL 8.0, versi mesin minor 20250731 atau lebih baru. Jika diperlukan, tingkatkan versi mesin minor atau tingkatkan versi database.
-
Fitur transmisi real-time diaktifkan pada instans.
Pernyataan DDL yang didukung
Pernyataan DDL yang didukung oleh BRR bergantung pada versi mesin minor Anda:
| Versi mesin minor | Pernyataan yang didukung |
|---|---|
| 20250731 atau lebih baru | ALTER TABLE |
| 20251031 atau lebih baru | ALTER TABLE dan OPTIMIZE TABLE |
Aktifkan BRR
Atur parameter berikut pada database primary dan secondary dengan mengatur parameter instans. Perubahan berlaku segera—tidak diperlukan restart instans.
Database Utama
| Parameter | Deskripsi | Default |
|---|---|---|
loose_binlog_realtime_apply_ddl_source_enabled |
Atur ke ON untuk mengaktifkan BRR pada primary. |
— |
loose_binlog_realtime_ddl_time_limit |
BRR hanya berlaku untuk pernyataan DDL yang waktu eksekusinya melebihi ambang batas ini (dalam milidetik). N adalah bilangan bulat yang lebih besar dari atau sama dengan 0. | 1000 |
Database sekunder
| Parameter | Deskripsi | Default |
|---|---|---|
loose_binlog_realtime_apply_workers |
Jumlah thread Brr Worker pada secondary. Harus berupa bilangan bulat yang lebih besar dari atau sama dengan 1. | — |
Hasil benchmark
Pengujian berikut menggunakan satu tabel dengan 80.000.000 catatan (23 GB) dan menjalankan ALTER TABLE sbtest1 ENGINE=InnoDB untuk membangun ulang tabel tersebut. Primary mengeksekusi DDL pada pukul 16:21:35 dan lagi pada pukul 16:32:50. Instans pengujian menggunakan versi mesin minor 20251031.
| BRR diaktifkan | Latensi Replikasi Sekunder |
|---|---|
| Tidak | 277 detik |
| Ya | 0 detik |