Spesifikasi

  1. Menggunakan 2 buah server Ubuntu

  2. Menggunakan Percona MySQL 5.7.

  3. Jangan lupa juga install percona-xtrabackup-24


Konfigutasi yang Ga Boleh Dilewatkan

  1. Pastikan master & slave pakai MySQL varian yang sama (misal Percona sama Percona, ga bisa Percona sama MariaDB)

  2. Allow port 3306 di firewall master & slave biar bisa keduanya bisa komunikasi

    Sederhana Banget ya Diagramnya

    Sederhana Banget ya Diagramnya


Setup Master Slave

  1. Matikan service mysql di instance slave

  2. Di instance master modifikasi file /etc/mysql/my.cnf tambahkan baris berikut lalu restart mysql

    [mysqld]
    #nama bin yang bakal di pakai untuk restore
    log-bin=master-mysql-bin
    #server id nya 1 aja, biar gampang
    server-id=1
    #mysql 5.7 katanya belum support multiple bind address, jadi kita listen ke 0.0.0.0
    bind-address=0.0.0.0
    
  3. Kita buat backup (export data si master) biar nanti bisa di restore di slave, gunakan perintah

    xtrabackup --backup --user=root --password=bismillahsiskiun9 --target-dir=/home/ipang/db-backup
    

    Kalau udah bener nanti bakal ada output xtrabackup: completed OK!

  4. Biar data nya konsisten lakukan hal ini

    xtrabackup --user=root --password=bismillahsiskiun9 --prepare --target-dir=/home/ipang/db-backup
    
  5. Copy data backup tadi ke instance slave, bisa pake

    rsync -avpP /home/ipang/db-backup ipang@192.168.100.2:/home/ipang/
    
  6. SSH ke instance slave, kita bakal restore data yang tadi di copy. Biar gampang kalau ada apa-apa, kita backup dulu config mysql dan datanya

    mv /var/lib/mysql /var/lib/mysql.original
    
  7. Restore data yang tadi di copy pake

    xtrabackup --move-back --target=/home/ipang/db-backup
    
  8. Ganti owner nya mysql config dan data yang kita restore tadi

    chown -R mysql:mysql /var/lib/mysql
    

    Kalau ga dijalanin service mysql ga bakal jalan karena owner nya root

  9. Ganti lagi ke instance master, kali ini kita config biar user replication nya, masuk ke mysql console

    grant replication slave on *.* to 'replication_user'@'192.168.100.2' identified by 'tukangngopistarling';
    
  10. Remote lagi di instance slave untuk memastikan kita bisa remote ke instance master menggunakan user yang tadi kita buat.

    mysql -u replication_user -h 192.168.100.2 -p
    

    lalu

    show grants
    
    Udah Bisa Akses dan Dapet Replication Permission

    Udah Bisa Akses dan Dapet Replication Permission

  11. Lanjut di instance slave, saatnya kita melakukan replika. Sebelumnya masuk ke /etc/mysql/my.conf, tambahin di bawahnya

    [mysqld]
    #server id nya 2 aja, biar gampang
    server-id=2
    

    Lalu jalanin service mysql nya, harusnya bisa jalan tanpa masalah ;)

  12. Cek file isi dari file /var/libxtrabackup_binlog_pos_innodb

    cat /var/libxtrabackup_binlog_pos_innodb
    
    Isinya Emang Cuma Gini Ya

    Isinya Emang Cuma Gini Ya

  13. Masuk ke MySQL console di instance slave, kita config biar replikasinya jalan

    CHANGE MASTER TO
    MASTER_HOST='192.168.100.1',
    MASTER_USER='replication_user',
    MASTER_PASSWORD='tukangngopistarlings',
    MASTER_LOG_FILE='master-mysql-bin.000001',
    MASTER_LOG_POS=835;
    

    Isi dari MASTER_LOG_FILE & MASTER_PASSWORD sesuaikan isi dari file /var/libxtrabackup_binlog_pos_innodb

  14. Finally, jalankan perintah ini lagi di MySQL console

    start Slave
    

    lalu cek status slave punya

    show slave status \G
    
    Yey Running!

    Yey Running!

Referensi:

Percona - Setting up replication


Jika kamu merasa tulisan ini bermanfaat & membantu kamu, kamu bisa berdonasi lewat saweria

If you feel this website help you, you can donate at saweria