Pada artikel ini, saya akan menunjukkan cara mengatur replikasi MySQL antara server database Master dan Slave. Ini akan menggunakan dua server, salah satunya akan mereplikasi data dari yang lain (Master to Slave). Gunakan pengaturan ini jika Anda ingin meningkatkan keandalan dan kinerja dari konfigurasi sistem Anda.
Silakan merujuk ke salah satu tutorial kami yang lain jika Anda memerlukan bantuan untuk menyiapkan sistem berbasis RHEL.
Untuk panduan ini, kita akan menggunakan setup lab replikasi MySQL ini.
MySQL Master - 192.168.56.1
MySQL Slave - 192.168.56.2
Langkah 1:Instal MySQL di Server Master dan Slave
Mulailah dengan menginstal database MySQL pada server master dan slave.
$ sudo dnf install @mysql
or
$ sudo yum install mysql-server
Setelah instalasi selesai, mulai layanan database.
$ sudo systemctl start mysqld
Kemudian aktifkan untuk memulai dengan systemctl. Mengaktifkannya akan memberi tahu layanan untuk memulai dalam urutan boot.
$ sudo systemctl enable mysqld
Kemudian konfirmasikan bahwa server database MySQL sedang berjalan:
$ sudo systemctl status mysqld
Langkah 2:Amankan MySQL di Server Master dan Slave
Direkomendasikan untuk mengamankan server database baru Anda dengan perintah berikut:
$ sudo mysql_secure_installation
Untuk memulai, Anda harus mengatur kata sandi root MySQL. Pastikan Anda menggunakan kata sandi root yang kuat, sebaiknya yang berisi kombinasi huruf besar, huruf kecil, khusus, dan karakter numerik dan lebih panjang dari 8 karakter.
Untuk petunjuk selanjutnya, ketik 'Y' untuk mengonfigurasi server database ke pengaturan yang disarankan.
Setelah Anda selesai menginstal dan melakukan hardening MySQL pada node master dan slave, langkah selanjutnya adalah mengkonfigurasi node master.
Langkah 3:Konfigurasi Node Master (Server)
Sekarang kita mengkonfigurasi node Master dan memberikan akses node budak ke sana. Pertama, kita perlu mengedit file konfigurasi mysql-server.cnf.
$ sudo vim /etc/my.cnf.d/mysql-server.cnf
Tambahkan baris berikut di bawah bagian [mysqld].
bind-address = 192.168.56.1
server-id = 1
log_bin = mysql-bin
Setelah selesai, simpan perubahan dan keluar. Kemudian restart server MySQL.
$ sudo sysemctl restart mysqld
Selanjutnya, login ke shell MySQL.
$ sudo mysql -u root -p
Jalankan perintah berikut untuk membuat pengguna database yang akan digunakan untuk mengikat master dan slave untuk replikasi.
mysql> CREATE USER 'replica'@'192.168.56.2' IDENTIFIED BY 'Password';
mysql> GRANT REPLICATION SLAVE ON *.*TO 'replica'@'192.168.56.2';
Terapkan perubahan dan keluar dari server MySQL.
mysql> FLUSH PRIVILEGES;
mysql> EXIT;
Verifikasi status master.
mysql> SHOW MASTER STATUS\G
Perhatikan Nama File dan Posisinya. Anda akan membutuhkan ini nanti saat menyiapkan slave untuk replikasi. Dalam kasus kami, kami memiliki nama file sebagai binlog.000001 dan Posisi 854.
Langkah 4:Konfigurasi Budak Node (Server)
Sekarang, kembali ke node Slave. Sekali lagi, edit file konfigurasi mysql-server.cnf.
$ sudo vim /etc/my.cnf.d/mysql-server.cnf
Seperti sebelumnya, rekatkan baris ini di bawah bagian [mysqld]. Ubah alamat IP agar sesuai dengan IP budak. Juga, tetapkan server-id yang berbeda. Di sini kami telah menetapkan nilai 2.
bind-address = 192.168.56.2
server-id = 2
log_bin = mysql-bin
Simpan perubahan dan keluar dari file. Kemudian restart server database.
$ sudo systemctl restart mysqld
Untuk mengonfigurasi node Slave agar mereplikasi dari node Master, masuk ke server MySQL Slave.
$ sudo mysql -u root -p
Mulailah dengan menghentikan utas replikasi:
mysql> STOP SLAVE;
Kemudian jalankan perintah berikut untuk mengkonfigurasi node budak untuk mereplikasi database dari master.
mysql> CHANGE MASTER TO
MASTER_HOST='192.168.56.1' ,
MASTER_USER='replica' ,
MASTER_PASSWORD='Password' ,
MASTER_LOG_FILE='binlog.000001' ,
MASTER_LOG_POS=854;
Bendera MASTER LOG FILE dan MASTER LOG POS cocok dengan nilai file dan posisi dari node Master di akhir Langkah 1.
MASTER HOST, MASTER USER, dan MASTER PASSWORD masing-masing adalah alamat IP Master, pengguna replikasi, dan kata sandi.
Utas replikasi budak kemudian harus dimulai:
mysql> START SLAVE;
Langkah 4:Menguji Replikasi Master-Slave MySQL
Sekarang, untuk menguji apakah replikasi antara node master dan slave berfungsi, masuk ke server database MySQL pada node master:
$ sudo mysql -u root -p
Buat database pengujian. Di sini, basis data pengujian kami disebut replikasi_db.
mysql> CREATE DATABASE replication_db;
Verifikasi keberadaan database.
mysql> SHOW DATABASES;
Sekarang pergi ke node budak, masuk ke server MySQL, dan periksa kembali apakah database replikasi db ada. Kita dapat melihat bahwa database hadir dalam output di bawah ini. Ini menunjukkan bahwa replikasi dari Master ke node slave telah terjadi.
mysql> SHOW DATABASES;