Programming Tutorial

Cara Membuat Replica Database MySQL dan Melakukan Sinkronisasi Secara Realtime

TUKANG KETIK
Agustus 28, 2024
0 Komentar
Beranda
Programming
Tutorial
Cara Membuat Replica Database MySQL dan Melakukan Sinkronisasi Secara Realtime

img source: redswitches.com

Replikasi database MySQL adalah proses membuat salinan database master ke satu atau lebih server replica, yang berguna untuk keperluan backup, load balancing, atau disaster recovery. Proses ini memastikan data yang ada di master tetap aman dan tersedia di replica jika terjadi kegagalan di server utama. Dalam artikel ini, kita akan membahas cara membuat replica database MySQL dan melakukan sinkronisasi secara realtime.

1. Setup Environment

Sebelum memulai, pastikan Anda memiliki:

  • Dua server MySQL: Satu server akan berfungsi sebagai master, dan yang lainnya sebagai replica.
  • Akses root ke kedua server untuk melakukan konfigurasi.

2. Konfigurasi Master Server

Langkah pertama adalah mengatur server master agar dapat mengirim perubahan data ke server replica.

a. Aktifkan Binary Logging

Binary log di MySQL mencatat semua perubahan yang dilakukan pada database. Log ini akan digunakan oleh server replica untuk melakukan sinkronisasi.

  1. Buka file konfigurasi MySQL (my.cnf atau my.ini):
    sudo nano /etc/mysql/my.cnf
  2. Tambahkan atau ubah baris berikut di bagian [mysqld]:
    [mysqld]
    log-bin=mysql-bin
    server-id=1
  3. Simpan dan restart MySQL:
    sudo systemctl restart mysql

b. Buat Pengguna Replikasi

Anda perlu membuat pengguna replikasi yang memiliki hak akses untuk membaca log binary dan terhubung ke server replica.

CREATE USER 'replica_user'@'%' IDENTIFIED BY 'replica_password';
GRANT REPLICATION SLAVE ON *.* TO 'replica_user'@'%';
FLUSH PRIVILEGES;

c. Catat Posisi Log Binary

Posisi log binary pada master perlu dicatat untuk memulai replikasi.

SHOW MASTER STATUS;

Catat nama file log dan posisi (File dan Position), misalnya:

File: mysql-bin.000001
Position: 154

3. Konfigurasi Replica Server

Setelah master dikonfigurasi, Anda perlu mengatur server replica untuk mulai menarik data dari master.

a. Konfigurasi Server Replica

  1. Buka file konfigurasi MySQL di server replica (my.cnf atau my.ini):
    sudo nano /etc/mysql/my.cnf
  2. Tambahkan atau ubah baris berikut:
    [mysqld]
    server-id=2
    relay-log=relay-bin
    log-bin=mysql-bin
  3. Simpan dan restart MySQL:
    sudo systemctl restart mysql

b. Restore Backup dari Master (Opsional)

Jika replica belum memiliki data dari master, lakukan backup dari master dan restore ke replica:

mysqldump -u root -p --all-databases --master-data > master_backup.sql
mysql -u root -p < master_backup.sql

c. Atur Replikasi di Replica

Konfigurasi replica untuk mulai menarik perubahan dari master:

CHANGE MASTER TO
MASTER_HOST='master_ip_address',
MASTER_USER='replica_user',
MASTER_PASSWORD='replica_password',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=154;
START SLAVE;

4. Verifikasi Sinkronisasi

Untuk memastikan replikasi berjalan dengan baik, Anda bisa memeriksa status replikasi di server replica:

SHOW SLAVE STATUS\G;

Perhatikan baris Slave_IO_Running dan Slave_SQL_Running yang seharusnya menunjukkan status Yes. Jika ada masalah, Anda bisa melihat kolom Last_Error untuk informasi lebih lanjut.

5. Mengelola dan Memantau Replikasi

Setelah konfigurasi, pastikan untuk terus memantau proses replikasi. Anda dapat menggunakan berbagai alat monitoring atau skrip otomatis untuk memastikan bahwa replikasi tetap berjalan dengan baik.

Kesimpulan

Replikasi database MySQL sangat penting untuk memastikan ketersediaan data dan menjaga integritas sistem, terutama dalam lingkungan produksi. Dengan mengikuti langkah-langkah di atas, Anda dapat membuat dan mengelola replikasi MySQL dengan sinkronisasi realtime yang andal.

Referensi

Penulis blog

TUKANG KETIK
TUKANG KETIK
Programming is 10% writing code, and 90% understanding why it's not working. Coding is trial & error.

Tidak ada komentar

Tolong Ketikannya di jaga dan gunakan bahasa yang sopan. Terima kasih
Atau Boleh request juga artikel apa yang ingin saya bahas ditulisan saya (tapi ini kalau saya bisa dan waktunya ada) maklum saya juga kerja.