Cara Mengatur Replikasi MySQL Master-Slave di Ubuntu 18.04


Replikasi master-slave MySQL adalah prosedur yang memungkinkan file database direplikasi atau disalin di satu atau lebih node dalam jaringan. Penyiapan ini memberikan redundansi dan toleransi kesalahan sehingga jika terjadi kegagalan di Node Master, database masih dapat dipulihkan di Node Slave. Hal ini memberikan ketenangan pikiran bagi pengguna bahwa semuanya tidak akan hilang dalam keadaan apa pun karena replika database masih dapat diambil dari server lain.

Dalam panduan ini, Anda akan mempelajari cara melakukan replikasi database MySQL Master-slave pada sistem Ubuntu 18.04.

Prasyarat

Dalam pengaturannya, kita akan memiliki dua server yang menjalankan Ubuntu 18.04 dengan alamat IP berikut.

Master server: 10.128.0.28
Slave server: 10.128.0.29

Sekarang mari selami dan lihat bagaimana kita dapat mengonfigurasi penyiapan replikasi Master-slave di Ubuntu.

Langkah 1: Instal MySQL pada Node Master dan Slave

Repositori Ubuntu berisi MySQL versi 5.7. Untuk memanfaatkan fitur baru dan menghindari potensi masalah, Anda harus menginstal versi MySQL terbaru. Tapi pertama-tama, mari perbarui kedua node menggunakan perintah apt berikut.

sudo apt update

Untuk menginstal MySQL di kedua node, jalankan perintah.

sudo apt install mysql-server mysql-client

Selanjutnya, Buka file konfigurasi mysql.

sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf

Pada Node master, gulir dan temukan atribut bind-address seperti yang ditunjukkan di bawah ini.

bind-address 	 =127.0.0.1

Ubah alamat loopback agar sesuai dengan alamat IP Node master.

bind-address  	=10.128.0.28

Selanjutnya, tentukan nilai untuk atribut server-id di bagian [mysqld]. Nomor yang Anda pilih tidak boleh cocok dengan nomor server-id lainnya. Mari kita berikan nilai 1.

server-id	 =1

Di bagian paling akhir file konfigurasi, salin dan tempel baris di bawah ini.

log_bin = /var/log/mysql/mysql-bin.log
log_bin_index =/var/log/mysql/mysql-bin.log.index
relay_log = /var/log/mysql/mysql-relay-bin
relay_log_index = /var/log/mysql/mysql-relay-bin.index

Keluar dari file konfigurasi dan mulai ulang layanan MySQL agar perubahan diterapkan pada node Master.

sudo systemctl restart mysql

Untuk memverifikasi bahwa server MySQL berjalan seperti yang diharapkan, jalankan perintah.

sudo systemctl status mysql

Sempurna! Server MySQL berjalan seperti yang diharapkan!

Langkah 2: Buat Pengguna Baru untuk Replikasi di Master Node

Di bagian ini, kita akan membuat pengguna replikasi di node master. Untuk mencapai ini, masuk ke server MySQL seperti yang ditunjukkan.

sudo mysql -u root -p

Selanjutnya, lanjutkan dan jalankan kueri di bawah ini untuk membuat pengguna replika dan memberikan akses ke budak replikasi. Ingatlah untuk menggunakan alamat IP Anda.

mysql> CREATE USER 'replication_user'@'10.128.0.29' IDENTIFIED BY 'replica_password';
mysql> GRANT REPLICATION SLAVE ON *.* TO 'replication_user '@'10.128.0.29';

Selanjutnya, jalankan perintah berikut.

mysql> SHOW MASTER STATUS\G

Outputnya harus serupa dengan apa yang Anda lihat di bawah.

Perhatikan baik-baik nilai mysql-bin.000002 dan ID Posisi 1643. Nilai-nilai ini akan sangat penting saat menyiapkan server budak.

Langkah 3: Konfigurasikan Server Budak MySQL

Pergilah ke server slave dan seperti yang kita lakukan dengan Server master, buka file konfigurasi MySQL.

sudo vim  /etc/mysql/mysql.conf.d/mysqld.cnf

Sama seperti server master, lanjutkan dengan mengedit baris berikut.

bind-address           = 10.128.0.29

Seperti sebelumnya, tentukan nilai untuk atribut server-id di bagian [mysqld]. Kali ini pilih nilai yang berbeda. Ayo gunakan 2.

server-id		=2 

Sekali lagi, tempelkan baris di bawah ini di bagian paling akhir file konfigurasi.

log_bin = /var/log/mysql/mysql-bin.log
log_bin_index =/var/log/mysql/mysql-bin.log.index
relay_log = /var/log/mysql/mysql-relay-bin
relay_log_index = /var/log/mysql/mysql-relay-bin.index

Selanjutnya restart server MySQL pada node slave.

sudo systemctl restart mysql

Setelah selesai, simpan dan keluar dari editor teks

Selanjutnya, masuk ke shell MySQL seperti yang ditunjukkan.

sudo mysql -u root -p

Pada langkah ini, Anda perlu membuat beberapa konfigurasi yang memungkinkan server budak terhubung ke server master. Tapi pertama-tama, hentikan thread budak seperti yang ditunjukkan.

mysql> STOP SLAVE; 

Untuk mengizinkan server budak mereplikasi server Master, jalankan perintah.

mysql> CHANGE MASTER TO MASTER_HOST ='10.128.0.28', MASTER_USER ='replication_user', MASTER_PASSWORD ='Saturn@1234', MASTER_LOG_FILE = 'mysql-bin.000002', MASTER_LOG_POS = 1643;

Jika Anda cukup tertarik, Anda akan melihat bahwa kami telah menggunakan nilai mysql-bin.00002 dan ID posisi 1643 yang sebelumnya ditampilkan setelah membuat pengguna replikasi budak.

Selain itu, alamat IP server Master, pengguna replikasi, dan kata sandi telah digunakan.

Nanti, mulai thread yang sebelumnya Anda hentikan.

mysql> START SLAVE;

Langkah 4: Verifikasi Replikasi MySQL Master-Slave

Untuk memeriksa apakah pengaturannya benar-benar berfungsi seperti yang diharapkan, kita akan membuat database baru di master dan memeriksa apakah sudah direplikasi di server MySQL Slave.

Masuk ke MySQL di Server master.

sudo mysql -u root -p

Mari buat database pengujian. Dalam hal ini, kita akan membuat database bernama replication_db.

mysql> CREATE DATABASE replication_db;

Sekarang, masuk ke instance MySQL Anda di server budak.

sudo mysql -u root -p

Sekarang buat daftar database menggunakan kueri.

mysql> SHOW DATABASES;

Anda akan melihat database yang Anda buat di master telah direplikasi di slave. Luar biasa ! Replikasi MySQL Master-slave Anda berfungsi seperti yang diharapkan! Anda sekarang dapat yakin bahwa jika terjadi kegagalan, salinan file database akan direplikasi ke server budak.

Kesimpulan

Dalam panduan ini, Anda mempelajari cara menyiapkan penyiapan replikasi MySQL Master-slave di Ubuntu 18.04.