Cara Membuat Replikasi Database di Mysql 8.4
Pendahuluan
Replikasi MySQL merupakan proses menyalin perubahan data dari satu server MySQL ke server lainnya secara otomatis. Replikasi dapat digunakan untuk meningkatkan ketersediaan database dan menyediakan server cadangan.
Pada MySQL 8.4, replikasi dapat dikonfigurasi menggunakan arsitektur Master-Replica. Master menjadi sumber perubahan data, sedangkan Replica menerima dan menerapkan perubahan melalui Binary Log.
Praktik ini menggunakan skema Single Master-Single Replica dengan GTID (Global Transaction Identifier) untuk mempermudah sinkronisasi transaksi antara kedua server.
Dokumentasi ini membahas persiapan server, konfigurasi MySQL, sinkronisasi data awal, konfigurasi replikasi GTID, pengujian, serta monitoring dan troubleshooting dasar.
Konsep Dasar Replikasi MySQL
- Replikasi MySQL menyalin perubahan database dari Master ke Replica secara otomatis.
- Perubahan pada Master dicatat dalam Binary Log.
- Replica mengambil dan menerapkan perubahan tersebut.
- Panduan ini menggunakan GTID (Global Transaction Identifier) untuk mengidentifikasi transaksi dan mempermudah sinkronisasi.
Catatan:
Replikasi bukan pengganti backup karena perubahan pada Master dapat ikut direplikasi ke Replica.
Jenis Replikasi di MySQL 8.4
- Master - Replica: satu server Master mengirimkan perubahan data ke Replica.
- Group Replication: beberapa server MySQL bekerja dalam satu kelompok untuk menjaga ketersediaan database.
- InnoDB Cluster: menyediakan arsitektur cluster MySQL untuk kebutuhan yang lebih kompleks.
Pada panduan ini digunakan model Single Master-Single Replica, yaitu satu server Master dan satu Replica. Model ini sederhana dan cocok untuk pembelajaran serta kebutuhan server cadangan.
Arsitektur dan Skema Replikasi
Arsitektur yang digunakan adalah Single Master - Single Replica. Master berperan sebagai server utama yang mencatat perubahan database, sedangkan Replica menerima dan menerapkan perubahan tersebut secara otomatis.
Skema arsitektur ditampilkan dalam bentuk gambar untuk mempermudah pemahaman proses replikasi.

Persiapan Server
- Siapkan 2 VPS sebagai Master dan Replica.
- Instal MySQL 8.4.11 pada kedua server.
- Gunakan server_id yang berbeda pada masing-masing server.
- Aktifkan Binary Log pada Source dan Replica.
- Aktifkan GTID pada kedua server.
- Pastikan port 3306 dapat diakses dari Replica ke Source.
- Pastikan koneksi jaringan antara kedua server berjalan dengan baik.
- Siapkan akses root MySQL untuk konfigurasi.
Konfigurasi MySQL pada Server Master
-
Konfigurasi MySQL pada Server Master
Konfigurasi MySQL agar dapat mencatat perubahan database melalui Binary Log dan mendukung replikasi berbasis GTID.
-
Edit konfigurasi MySQL:
nano /etc/my.cnf -
Tambahkan konfigurasi berikut:
[mysqld] server-id=1 log-bin=mysql-bin binlog_format=ROW gtid_mode=ON enforce_gtid_consistency=ON innodb_flush_log_at_trx_commit=1 sync_binlog=1 -
Restart MySQL:
systemctl restart mysqld -
Verifikasi konfigurasi:
mysql -u root -p -e " SHOW VARIABLES WHERE Variable_name IN ( 'server_id', 'log_bin', 'binlog_format', 'gtid_mode', 'enforce_gtid_consistency' );" -
Pastikan:
- server_id bernilai 1.
- log_bin bernilai ON.
- gtid_mode bernilai ON.
- binlog_format menggunakan ROW.
-
Konfigurasi MySQL pada Server Replica
-
Konfigurasi MySQL pada Server Replica
Konfigurasi MySQL pada Replica dengan server-id yang berbeda serta mengaktifkan Binary Log dan GTID.
-
Edit konfigurasi MySQL:
nano /etc/mysql/mysql.conf.d/mysqld.cnf -
Tambahkan konfigurasi berikut:
[mysqld] server-id=2 log-bin=mysql-bin binlog_format=ROW gtid_mode=ON enforce_gtid_consistency=ON -
Restart MySQL:
systemctl restart mysql -
Verifikasi konfigurasi:
mysql -u root -p -e " SHOW VARIABLES WHERE Variable_name IN ( 'server_id', 'log_bin', 'binlog_format', 'gtid_mode', 'enforce_gtid_consistency' );" -
Pastikan:
- server_id bernilai 2.
- log_bin bernilai ON.
- gtid_mode bernilai ON.
- binlog_format menggunakan ROW.
-
Membuat User Replikasi MySQL
-
Membuat User Replikasi pada Server Source
Buat user khusus pada server Source yang digunakan Replica untuk terhubung dan mengambil data replikasi.
-
Login ke MySQL:
mysql -u root -p -
Buat user replikasi:
CREATE USER 'repl'@'103.151.140.83' IDENTIFIED BY 'Repl@2026Lab!'; GRANT REPLICATION SLAVE ON *.* TO 'repl'@'103.151.140.83'; -
Verifikasi user:
SELECT user, host FROM mysql.user WHERE user = 'repl'; -
Pastikan user repl terdaftar dengan host 103.151.140.83.
-
Sinkronisasi Data Awal
-
Sinkronisasi Data Awal
Sebelum replikasi dijalankan, salin data yang sudah ada pada Source ke Replica menggunakan mysqldump.
-
Buat dump database pada Source:
mysqldump -u root -p \ --single-transaction \ --triggers \ --routines \ --events \ --set-gtid-purged=ON \ --databases replication_test > /root/replication_test.sql -
Kirim file dump ke Replica:
scp /root/replication_test.sql root@103.151.140.83:/root/ -
Restore database pada Replica:
mysql -u root -p < /root/replication_test.sql -
Verifikasi data pada Replica:
mysql -u root -p -e "SELECT * FROM replication_test.pelanggan;" -
Pastikan data pada Replica sudah sama dengan Source sebelum melanjutkan konfigurasi replikasi.
-
Konfigurasi Replikasi MySQL 8.4
-
Menjalankan Replikasi pada Server Replica
Pada server Replica, konfigurasi koneksi ke Source menggunakan GTID Auto Position.
-
Login ke MySQL:
mysql -u root -p -
Hentikan proses replikasi:
STOP REPLICA; -
Konfigurasikan koneksi ke Source:
CHANGE REPLICATION SOURCE TO SOURCE_HOST='103.151.140.102', SOURCE_PORT=3306, SOURCE_USER='repl', SOURCE_PASSWORD='Repl@2026Lab!', SOURCE_AUTO_POSITION=1, GET_SOURCE_PUBLIC_KEY=1; -
Jalankan replikasi:
START REPLICA; -
Periksa status replikasi:
SHOW REPLICA STATUS\G -
Pastikan hasil menunjukkan:
Replica_IO_Running: Yes Replica_SQL_Running: Yes Auto_Position: 1 -
Jika kedua thread bernilai Yes dan tidak terdapat error, replikasi Source-Replica sudah aktif.
-
Pengujian Replikasi Database
-
Menguji Replikasi MySQL
Buat perubahan data pada server Source, kemudian periksa apakah perubahan tersebut otomatis diterapkan pada Replica.
-
Buat tabel pada Source:
CREATE TABLE produk ( id INT AUTO_INCREMENT PRIMARY KEY, nama VARCHAR(100) NOT NULL ); -
Tambahkan data:
INSERT INTO produk (nama) VALUES ('Laptop'), ('Server VPS'), ('Keyboard'); -
Periksa data pada Replica:
SELECT * FROM replication_test.produk; -
Jika tabel dan data muncul pada Replica tanpa dibuat secara manual, berarti replikasi berjalan dengan baik.
-
Monitoring dan Maintenance Replikasi
-
Monitoring Replikasi MySQL
Monitoring dilakukan untuk memastikan replikasi antara Source dan Replica tetap berjalan normal.
-
Periksa status replikasi pada Replica:
SHOW REPLICA STATUS\G -
Pastikan parameter utama menunjukkan:
Replica_IO_Running: Yes Replica_SQL_Running: Yes Seconds_Behind_Source: 0 -
Periksa Binary Log pada Source:
SHOW BINARY LOG STATUS; -
Pemeriksaan secara berkala dapat membantu mendeteksi gangguan koneksi, keterlambatan replikasi, atau error pada proses penerapan transaksi.
-
Troubleshooting Replikasi MySQL
-
Troubleshooting Replikasi MySQL
Beberapa masalah umum pada replikasi dapat diperiksa melalui status Replica:
SHOW REPLICA STATUS\GPerhatikan parameter berikut:
- Replica_IO_Running memeriksa koneksi Replica ke Source.
- Replica_SQL_Running memeriksa proses penerapan transaksi.
- Last_IO_Error menampilkan error koneksi atau pengambilan data.
- Last_SQL_Error menampilkan error saat menjalankan transaksi.
Jika terjadi masalah, periksa koneksi jaringan, akses port 3306, kredensial user replikasi, konfigurasi GTID, dan log MySQL pada kedua server.
Kesimpulan
Replikasi MySQL 8.4 menggunakan skema Master-Replica dapat membantu menyediakan salinan database dan meningkatkan ketersediaan data. Dengan GTID, sinkronisasi transaksi antara Master dan Replica menjadi lebih mudah dikelola.
Pada praktik ini, konfigurasi replikasi berhasil dilakukan dan perubahan data pada Master dapat direplikasi secara otomatis ke Replica.
Setelah replikasi berjalan, status Replica dapat dipantau secara berkala untuk memastikan proses sinkronisasi tetap berjalan normal dan mendeteksi masalah jika terjadi gangguan.


