Ini update tulisan saya tentang replikasi database mysql yang pernah saya buat dahulu untuk versi MySQL terbaru.
Kali ini saya menggunakan versi MySQL 14.14 (Ubuntu 15.04).
Untuk mengecek versi MySQL yang dipakai, bisa menggunakan perintah #mysql --version dari terminal linux.
Asumsi :
Server MySQL sudah terinstal di kedua komputer, kalau belum bisa diinstal dahulu $
sudo apt-get install mysql-server mysql-client
Server master MySQL address : 192.168.1.1
Server Slave MySQL address : 192.168.1.2
OK Langsung saja ya ke step-step pengerjaannya...
SERVER MASTER
- Edit file konfigurasi mysql
$sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf atau untuk versi yang lama
$sudo nano /etc/mysql/my.cnf - Edit/tambahkan baris berikut di file konfirgurasi
bind-address = 192.168.1.1 atau * (address server master) server-id = 1 log_bin = /var/log/mysql/mysql-bin.log binlog_do_db = database1 (database yg mau direplikasi) Kalau mau lebih dari satu database tinggal tambahkan baris lagi binlog_do_db = database2 binlog_do_db = database3 dst
binlog_ignore_db = database4 (database yg tdk ikut direplikasi)
- Refresh database mysql $sudo service mysql restart
- Login ke Mysql
#mysql -u root -p mysql>GRANT REPLICATION SLAVE ON *.* TO 'slave_user'@'%'
IDENTIFIED BY 'password'; (buat user replikasi) mysql>FLUSH PRIVILEGES; mysql>USE database1; mysql>FLUSH TABLES WITH READ LOCK; mysql>SHOW MASTER STATUS;
Akan keluar tampilan seperti berikut
mysql> SHOW MASTER STATUS; +------------------+----------+--------------+------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | +------------------+----------+--------------+------------------+ | mysql-bin.000001 | 107 | database1 | | +------------------+----------+--------------+------------------+ 1 row in set (0.00 sec)
Catat File dan Position yang akan digunakan di SERVER SLAVE (contoh disini mysql-bin.000001 dan 107)
- Backup database yang akan direplikasi untuk diinstal di SERVER SLAVE
#mysqldump -u root -p --opt database1 > database1.sql
- Unlock Tabel
mysql>UNLOCK TABLES;
mysql>QUIT;
SERVER SLAVE
- Buat database yang akan direplikasi di MySQL
#mysql -uroot -pmysql>CREATE DATABASE database1;
- Import struktur database yang sudah dilakukan di server master sebelumnya
#mysql -u root -p database1 < /path/to/database1.sql
- Edit file konfigurasi MySQL
$sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
- Edit/tambah file konfigurasi mysql
server-id = 2 (nomor harus beda dari Server Master)
relay-log = /var/log/mysql/mysql-relay-bin.log
log_bin = /var/log/mysql/mysql-bin.log
binlog_do_db = database1 (list database yg direplikasi)
- Restart MySQL
$sudo service mysql restart
- Buka MySQL
#mysql -u root -p
mysql>CHANGE MASTER TO MASTER_HOST='12.34.56.789', MASTER_USER='slave_user',
MASTER_PASSWORD='password',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS= 107; (master log & master pos disesuaikan)
- Start Slave
mysql>START SLAVE;
mysql>SHOW SLAVE STATUS\G
- Jika ada masalah saat koneksi bisa ditambah perintah berikut
mysql>SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1;
mysql>SLAVE START;
Good LUCK...
No comments:
Post a Comment