MySQL-Master-Master-replication

master1

my.cnf (intinya saja)

server-id = 1
log-bin = /var/lib/mysql/repl_log/mysql-bin
relay-log = /var/lib/mysql/relay_log/relay-bin

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
(detailnya lihat di my.cnf tools.percona.com)

buat direktori untuk memisahkan folder log dan db

# mkdir /var/lib/mysql/repl_log

# mkdir /var/lib/mysql/relay_log

# chown -R mysql:mysql /var/lib/mysql/repl_log

# chown -R mysql:mysql /var/lib/mysql/relay_log

kemudian restart service mysql

# service mysql restart

buat user dan grant untuk replicate dari master2

mysql> CREATE USER ‘replication_user’@’192.168.247.156’ IDENTIFIED BY ‘r3pl1c4tE’;
mysql> GRANT REPLICATION SLAVE ON *.* TO ‘replication_user’@’192.168.247.156’;

lakukan command ini me lock server master agar dapat ter record binary position log nya

mysql> FLUSH TABLES WITH READ LOCK;

kemudian cek status master server dengan perintah

mysql> show master status;

untuk mengetahui posisi log bin nya

kemudian buatlah snapshot data dari server master menggunakan mysqldump dan restore di server master2

# mysqldump –all-databases –master-data > data_dump1.sql

jika sudah unlcok agar bisa read dan write di databse

mysql> UNLOCK TABLES;

copy kan hasil dump tersebut ke server master2

# scp data_dump1.sql root@192.168.247.x:/home
====

master2

my.cnf
server-id = 2
log-bin = /var/lib/mysql/repl_log/mysql-bin
relay-log = /var/lib/mysql/relay_log/relay-bin

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
(detailnya lihat di my.cnf tools.percona.com)

buat direktori untuk memisahkan folder log dan db

# mkdir /var/lib/mysql/repl_log

# mkdir /var/lib/mysql/relay_log

# chown -R mysql:mysql /var/lib/mysql/repl_log

# chown -R mysql:mysql /var/lib/mysql/relay_log

kemudian restart service mysql

# service mysql restart

restore data hasil dump dari server master1

# mysql -u root -p CREATE USER ‘replication_user’@’192.168.x.x’ IDENTIFIED BY ‘password’;
mysql> GRANT REPLICATION SLAVE ON *.* TO ‘replication_user’@’192.168.x.x’;

kemudian cek status master server dengan perintah

mysql> show master status;

untuk mengetahui posisi log bin nya

jika sudah unlcok agar bisa read dan write di databse

mysql> UNLOCK TABLES;

jika sudah lakukan change master ke server master1

mysql> CHANGE MASTER TO
MASTER_HOST=’192.168.2.x’,
MASTER_USER=’replication_user’,
MASTER_PASSWORD=’r3pl1c4tE’,
MASTER_PORT=3306,
MASTER_LOG_FILE=’mysql-bin.xxx’,
MASTER_LOG_POS=xxx,
MASTER_CONNECT_RETRY=60;

kemudian lakukan perintah start slave

mysql> start slave;

Jika sudah cek status dari slave tersebut dengan perintah

mysql> show slave status;

=======

master1

lakukan change master ke server master2 agar server master1 menjadi slave dari master2

mysql> CHANGE MASTER TO
MASTER_HOST=’192.168.247.x’,
MASTER_USER=’replication_user’,
MASTER_PASSWORD=’r3pl1c4tE’,
MASTER_PORT=3306,
MASTER_LOG_FILE=’mysql-bin.xxx’,
MASTER_LOG_POS=xxx,
MASTER_CONNECT_RETRY=60;

kemudian lakukan perintah start slave

mysql> start slave;

Jika sudah cek status dari slave tersebut dengan perintah

mysql> show slave status;

Advertisements