Cara Replikasi Database Master-Slave MariaDB 10 di Ubuntu 16.04
Replikasi database adalah suatu metode untuk melakukan duplikasi database ke server yang lain.
Model replikasi database:
- Master-Slave: Jika terjadi perubahan database pada Master, database pada Slave juga ikut berubah. Namun, jika terjadi perubahan pada Slave, Master tidak terpengaruh.
- Master-Master: Semua server bertindak sebagai Master dan Slave. Karena jika terjadi perubahan database di salah satu server, database pada server lain juga ikut berubah.
Pada percobaan replikasi ini menggunakan model replikasi Master-Slave. Untuk model replikasi Master-Master baca di Cara Replikasi Database Master-Master MariaDB 10 di Ubuntu 16.04.
Perangkat Percobaan
Perangkat yang digunakan pada percobaan replikasi:
- Distro: Ubuntu 16.04 LTS
- MariaDB: 10.0.29
- IP Master: 10.0.8.26
- IP Slave: 10.0.8.38
Konfigurasi Server MariaDB Master
Ubah konfigurasi MariaDB
1 2 3 4 5 6 7 8 9 10 | sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf # baris 29, ubah IP bind-address bind-address = 10.0.8.26 # baris 74, lepas comment server-id = 1 # baris 75, lepas comment log_bin = /var/log/mysql/mysql-bin.log |
Restart service MariaDB
1 | sudo systemctl restart mysql |
Buat user untuk akses replikasi
1 2 3 4 | mysql -u root -p GRANT REPLICATION SLAVE ON *.* TO 'replica'@'10.0.8.38' IDENTIFIED BY 'secret'; FLUSH PRIVILEGES; |
Kunci database agar tidak ada perubahan pada saat konfigurasi replikasi
1 | FLUSH TABLES WITH READ LOCK; |
Tampilkan status master. File dan Position dibutuhkan pada saat konfigurasi Slave.
1 2 3 4 5 6 7 | SHOW MASTER STATUS; +------------------+----------+--------------+------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | +------------------+----------+--------------+------------------+ | mysql-bin.000001 | 1961 | | | +------------------+----------+--------------+------------------+ |
Konfigurasi Server MariaDB Slave
Ubah konfigurasi MariaDB
1 2 3 4 5 6 7 8 9 10 | sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf # baris 29, ubah IP bind-address bind-address = 10.0.8.38 # baris 74, lepas comment. Ganti dengan nomor lain, jangan sama dengan master server-id = 2 # baris 75, lepas comment log_bin = /var/log/mysql/mysql-bin.log |
Restart service MariaDB
1 | sudo systemctl restart mysql |
Konfigurasi koneksi ke Master
1 2 3 4 5 6 7 8 | mysql -u root -p CHANGE MASTER TO MASTER_HOST='10.0.8.26', MASTER_USER='replica', MASTER_PASSWORD='secret', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=1961; |
Jalankan slave
1 | START SLAVE; |
Jika tidak ada masalah pada saat menjalankan slave, lepas kunci database pada server master
1 2 3 | mysql -u root -p UNLOCK TABLES; |
Tampilkan status slave
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 | SHOW SLAVE STATUS \G *************************** 1. row *************************** Slave_IO_State: Waiting for master to send event Master_Host: 10.0.8.26 Master_User: replica Master_Port: 3306 Connect_Retry: 60 Master_Log_File: mysql-bin.000001 Read_Master_Log_Pos: 1961 Relay_Log_File: mysqld-relay-bin.000002 Relay_Log_Pos: 1750 Relay_Master_Log_File: mysql-bin.000001 Slave_IO_Running: Yes Slave_SQL_Running: Yes Replicate_Do_DB: Replicate_Ignore_DB: Replicate_Do_Table: Replicate_Ignore_Table: Replicate_Wild_Do_Table: Replicate_Wild_Ignore_Table: Last_Errno: 0 Last_Error: Skip_Counter: 0 Exec_Master_Log_Pos: 1961 Relay_Log_Space: 2048 Until_Condition: None Until_Log_File: Until_Log_Pos: 0 Master_SSL_Allowed: No Master_SSL_CA_File: Master_SSL_CA_Path: Master_SSL_Cert: Master_SSL_Cipher: Master_SSL_Key: Seconds_Behind_Master: 0 Master_SSL_Verify_Server_Cert: No Last_IO_Errno: 0 Last_IO_Error: Last_SQL_Errno: 0 Last_SQL_Error: Replicate_Ignore_Server_Ids: Master_Server_Id: 100 Master_SSL_Crl: Master_SSL_Crlpath: Using_Gtid: No Gtid_IO_Pos: 1 row in set (0.00 sec) |
Pengujian
- Lakukan pembuatan database, pembuatan tabel, CRUD record pada server Master.
- Setiap selesai menjalankan satu perintah pada server Master periksa server Slave apakah ada terjadi hal yang sama pada server Master.
selamat mencoba 🙂