Apa itu replication database?
Replication database adalah proses ketika anda memiliki lebih dari satu database server dengan terdiri dari Master (live server database) dan Slave (server database yang menerima data dan menampilkan data identik yang berada pada server database Master).
Replication database ini berfungsi sekali jika anda ingin migrasi database secara live atau sebagai backup database atau sebagai failover database.
Di postingan kali ini, saya akan menjelaskan cara setup database replication dengan contoh jika kita memiliki 2 buah server yang sudah terinstall mariadb-server.
- Master
Alamat IP : 192.168.1.1
Nama database yang sudah berjalan : db_alvian - Slave
Alamat IP : 192.168.1.2
Belum ada database
A. Setup di server Master Database
- Buka akses remote database dari slave server
nano /etc/mysql/mariadb.conf.d/50-server.cnf
lalu edit pada bagian#ubah menjadi ip slave bind-address = 192.168.1.2 #lalu tambahkan dipaling bawah server-id = 1 log_bin = /var/log/mysql/mysql-bin.log max_binlog_size = 100M relay_log = /var/log/mysql/mysql-relay-bin relay_log_index = /var/log/mysql/mysql-relay-bin.index
– save (ctrl+x, y, enter)
- Restart mariadb server dengan command
/etc/init.d/mariadb restart
- Buat user replication
mysql -u root
CREATE USER 'replication'@'%' identified by 'password'; GRANT REPLICATION SLAVE ON *.* TO 'replication'@'%'; FLUSH PRIVILEGES; SHOW MASTER STATUS;
+------------------+----------+--------------+------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | +------------------+----------+--------------+------------------+ | mysql-bin.000001 | 4302 | | | +------------------+----------+--------------+------------------+
– Ingat selalu nama file log dan positionnya untuk di input nanti kedalam slave server
– exit
B. Setup di server Slave Database
- Buka akses remote database dari Master server
nano /etc/mysql/mariadb.conf.d/50-server.cnf
lalu edit pada bagian#ubah menjadi ip slave bind-address = 192.168.1.1 #lalu tambahkan dipaling bawah server-id = 2 log_bin = /var/log/mysql/mysql-bin.log max_binlog_size = 100M relay_log = /var/log/mysql/mysql-relay-bin relay_log_index = /var/log/mysql/mysql-relay-bin.index
– save (ctrl+x, y, enter)
- Restart mariadb server dengan command
/etc/init.d/mariadb restart
- Hentikan semua proses slave dengan command
mysql -u root
STOP SLAVE; CHANGE MASTER TO MASTER_HOST = '192.168.1.1', MASTER_USER = 'replication', MASTER_PASSWORD = 'password', MASTER_LOG_FILE = 'mysql-bin.000001', MASTER_LOG_POS = 4302; START SLAVE; #buat database baru dengan nama yang sama seperti di server master create database db_alvian; SHOW SLAVE STATUS \G EXIT;
– jika anda menemui error table not exist (itu biarkan saja karena memang harus melakukan import terlebih dahulu dari database master ke slave untuk mendapatkan struktur table yang identik)
– sesuaikan isi dari setiap definisinya pastikan semua benar - Backup database yang sudah ada di server Master dengan command
mysqldump --host 192.168.1.1 -P 3306 -u replication -p db_alvian > backup-db_alvian.sql
- Restore database nya ke dalam db_alvian dengan command
mysql -u root db_alvian < backup-db_alvian.sql
C. Uji Coba Replication database
- Update data di database Master
- Silahkan untuk coba tambah, hapus, ataupun update data di database Master
- Lalu lihat data yang berada di database Slave akan sama seperti data yang ada di database Master
- Ketika anda membuat database baru di server Master maka database tersebut akan otomatis muncul juga di server Slave
- untuk melihat status slave silahkan jalankan command
SHOW SLAVE STATUS \G
- Update data di database Slave
- Silahkan untuk coba tambah, hapus, ataupun update data di database Slave
- Lalu lihat data yang telah anda rubah tidak akan berubah di server Master
- Ketika anda membuat database baru di server Slave, database tersebut tidak akan muncul di server Master
- kesimpulannya adalah database Slave menerima perubahan data dari database Master dan database Master tidak menerima perubahan data dari database Slave
Demikian tutorial cara replication database mariadb (master-slave), silahkan tulis di kolom komentar jika menemui kendala atau memiliki pertanyaan lainnya ya 🙂