Ruang penulis
← Kembali ke jurnal
MySQL

Replikasi MySQL: memisahkan beban baca dan tulis

Kenali konsep dasar primary-replica dan efeknya pada konsistensi data yang dibaca.

DTim Diary Coding · 27 Agt 2026 · 2 menit baca

Kenapa perlu replikasi

Saat trafik baca jauh lebih besar dari trafik tulis, satu server database bisa kewalahan. Replikasi menyalin data dari server utama (primary) ke satu atau lebih server salinan (replica) yang bisa menangani query baca.

Cara kerja replikasi MySQL

Server primary mencatat setiap perubahan data ke binary log. Server replica membaca binary log tersebut dan menerapkan perubahan yang sama pada datanya sendiri.

# Di server primary, aktifkan binary logging (my.cnf)
[mysqld]
server-id = 1
log_bin = mysql-bin

# Di server replica
[mysqld]
server-id = 2

Mengarahkan query ke server yang tepat

Aplikasi biasanya diarahkan agar operasi tulis (INSERT, UPDATE, DELETE) selalu ke primary, sementara operasi baca (SELECT) bisa diarahkan ke salah satu replica.

// Contoh koneksi Laravel dengan konfigurasi read/write terpisah
'mysql' => [
    'read' => ['host' => ['replica1.internal']],
    'write' => ['host' => ['primary.internal']],
    'sticky' => true,
],

Opsi sticky memastikan permintaan yang baru saja menulis data akan membaca dari primary pada request yang sama, menghindari kondisi seolah data belum tersimpan.

Replication lag

Karena replica menerapkan perubahan secara asinkron, ada jeda waktu (lag) antara data di primary dan replica. Jika aplikasi langsung membaca data yang baru saja ditulisnya dari replica yang belum sinkron, data yang terlihat bisa terasa "hilang" sementara.

Latihan

Cari tahu cara memeriksa nilai Seconds_Behind_Source (atau Seconds_Behind_Master pada versi lama) melalui perintah SHOW REPLICA STATUS, dan diskusikan bagaimana nilai ini memengaruhi keputusan mengarahkan query baca.

← Jelajahi catatan lainnya