Terkadang kita mungkin perlu mereplikasi data dari satu server MySQL DB ke satu atau lebih server MySQL DB secara otomatis. Pada dasarnya, administrator database melakukan tugas-tugas yang berhubungan dengan database seperti replikasi, clustering, dan auto-failover. Mengelola server database MySQL dan melakukan tugas replikasi adalah tanggung jawab pakar database. Pada artikel ini, kita akan belajar cara mengatur replikasi database MySQL master-slave di Ubuntu 20.04. Pada artikel ini, kita akan menggunakan MySQL 8 untuk replikasi.
Prasyarat
- Dua server ubuntu
- Akar akun pengguna dengan hak istimewa
- Koneksi internet untuk mengunduh paket
Dalam contoh ini, server berikut sedang digunakan.
- Guru – 192.168.178.135
- Budak – 192.168.178.137
Instal server MySQL 8 di kedua node
Instalasi MySQL adalah proses yang sederhana dan mudah. Di sistem Ubuntu, MySQL dapat diinstal menggunakan repositori paket APT. Sebelum instalasi, perbarui indeks paket Ubuntu menggunakan perintah berikut.
$apt update
Instal paket server MySQL menggunakan perintah di bawah ini.
$apt install mysql-server -y
Instalasi baru server MySQL membuatnya tidak aman. Jalankan script “mysql_secure_installation ” untuk mengubah beberapa opsi default yang kurang aman seperti login root jarak jauh, database pengujian, pengguna sampel, dll.
$ mysql_secure_installation
Mulai dan aktifkan layanan MySQL
$ systemctl start mysql
$ systemctl enable mysql
Konfigurasi server Master DB
Sekarang kita perlu membuat beberapa perubahan pada server master untuk replikasi. Edit mysqld.conf file di bawah direktori /etc/mysql/mysql.conf.d dan tambahkan baris berikut. Ingatlah untuk menambahkan variabel konfigurasi di bawah [mysqld] bagian.
$ vi /etc/mysql/mysql.conf.d/mysqld.conf
[mysqld] pid-file = /var/run/mysqld/mysqld.pid socket = /var/run/mysqld/mysqld.sock datadir = /var/lib/mysql log-error = /var/log/mysql/error.log server-id = 1 log-bin = /var/log/mysql/mysql-bin.log tmpdir = /tmp binlog_format = ROW max_binlog_size = 800M sync_binlog = 1 expire-logs-days = 5 slow_query_log=1 slow_query_log_file=/var/lib/mysql/mysqld-slow.log
Dimana:
- server-id – ID unik dari server MySQL. ID ini tidak dapat digunakan kembali di node mana pun di cluster.
- log-bin – Ini adalah file tempat semua informasi replikasi disimpan.
- max_binlog_size – Ukuran file binlog.
Juga, beri komentar pada bind-address sebagai:
#bind-address =127.0.0.1
Mulai ulang layanan mysql
$systemctl restart mysql
Buat pengguna baru untuk layanan Replikasi pada master node
Sekarang kita perlu membuat pengguna database di node master yang akan digunakan oleh budak saat menghubungkan. Masuk ke database menggunakan pengguna root dan buat pengguna.
$ mysql -u root -p
$ mysql> CREATE USER [email protected] IDENTIFIED BY '[email protected]';
Catatan:Menentukan alamat IP saat membuat pengguna hanya akan menerima koneksi MySQL dari host yang ditentukan. Koneksi dari host lain akan ditolak. Dalam contoh ini, saya telah menggunakan alamat IP server budak MySQL saya. Anda mungkin perlu mengubah alamat IP ini sesuai dengan lingkungan Anda.
Pengguna membutuhkan hak REPLICATION SLAVE untuk dapat mereplikasi data MySQL. Gunakan kueri berikut untuk memberikan hak istimewa.
mysql> GRANT REPLICATION SLAVE on *.* to [email protected] ;
Verifikasi hak istimewa yang diberikan dengan menggunakan kueri berikut.
mysql> SHOW GRANTS FOR [email protected];
Konfigurasikan simpul DB budak
Kami telah menginstal server MySQL pada langkah sebelumnya. Sekarang kita akan mengubah beberapa file konfigurasi untuk mengaktifkan proses replikasi. Edit mysqld.conf file di bawah /etc/mysql/mysql.conf.d direktori dan tambahkan konten berikut.
$vi /etc/mysql/mysql.conf.d/mysqld.conf
Isi file konfigurasi:
[mysqld] log_bin = /var/log/mysql/mysql-bin.log server-id = 2 read_only = 1 tmpdir = /tmp binlog_format = ROW max_binlog_size = 800M sync_binlog = 1 expire-logs-days = 5 slow_query_log = 2
Dimana,
- id-server – ID server MySQL yang unik.
- hanya baca – Node budak disetel ke mode hanya-baca
- log_bin – Mengaktifkan pencatatan biner di simpul budak
- slow_query_log – Mengaktifkan log kueri lambat
Juga, beri komentar pada baris bind-address.
# bind-address = 127.0.0.1
Sekarang restart layanan MySQL
$ systemctl restart mysql
Hubungkan server budak ke server master
Sebelum mengkonfigurasi server budak, buka server master dan periksa statusnya.
$ mysql -u root -p
mysql> SHOW MASTER STATUS\G
Perhatikan flag berikut yang akan kita gunakan di server slave.
- File:mysql-bin.000002
- Posisi:156
Sekarang konfigurasikan parameter di server budak yang akan digunakan untuk menghubungkan server master. Ikuti langkah-langkah di bawah ini.
- Masuk ke server MySQL menggunakan kredensial root
$ mysql -u root -p
- Hentikan utas Budak
mysql> STOP SLAVE;
- Siapkan server budak untuk mereplikasi server master
mysql> CHANGE MASTER TO MASTER_HOST='192.168.178.137', MASTER_USER='replication_user', MASTER_PASSWORD='[email protected]', MASTER_LOG_FILE='mysql-bin.000003', MASTER_LOG_POS=1050;
Dimana,
- 192.168.178.137 – Alamat IP server master
- replication_user – Pengguna MySQL dari server master
- sandi – Replikasi kata sandi pengguna
- mysql-bin.000002 – File log dari server master
- 156 – Posisi log server master
Sekarang aktifkan server budak.
mysql> START SLAVE;
Verifikasi status budak dengan menggunakan kueri berikut
mysql> SHOW SLAVE STATUS\G
Perhatikan status bendera berikut.
- Slave_IO_Running:Menghubungkan
- Slave_IO_Running:Menghubungkan
Verifikasi replikasi master-slave
Master dan slave dikonfigurasi untuk mereplikasi. Kami dapat memverifikasi apakah replikasi master-slave berfungsi atau tidak. Di server master, masuk ke shell MySQL dan buat database pengujian.
$ mysql -u root -p
mysql> CREATE DATABASE example_db;
Verifikasi database yang dibuat.
mysql> SHOW DATABASES;
Sekarang login ke server budak
$ mysql -u root -p
Jalankan kueri berikut untuk membuat daftar database.
mysql> SHOW DATABASES;
Anda dapat melihat database yang dibuat di server master direplikasi ke server budak.
Kesimpulan
Pada artikel ini, kita belajar cara mengatur node master dan slave MySQL di Ubuntu 20.04. Anda dapat mengikuti artikel ini untuk mengatur replikasi MySQL master-slave di Ubuntu 18.04 juga.