test[mysqld]
log-bin=/var/log/mysql/updatelog
server-id = 1
binlog-do-db=test
binlog-ignore-db=mysql
重啟 → 建立同步帳號:
GRANT REPLICATION SLAVE, RELOAD, SUPER ON *.* TO 'back'@'192.168.0.2' IDENTIFIED BY 'back';
FLUSH PRIVILEGES;
[mysqld]
server-id = 2
master-host = 192.168.0.1
master-user = back
master-password = back
master-port = 3306
replicate-do-db=test
replicate-ignore-db=mysql
重啟
-- On A
SHOW MASTER STATUS;
-- 記錄 File、Position,如 updatelog.000028, 313361
-- On B
SLAVE STOP;
CHANGE MASTER TO MASTER_LOG_FILE='updatelog.000028', MASTER_LOG_POS=313361;
SLAVE START;
-- 驗證
SHOW SLAVE STATUS\G;
-- Slave_IO_Running: Yes, Slave_SQL_Running: Yes 表示同步中
[mysqld]
log-bin=/var/log/mysql/updatelog
binlog-do-db=test
binlog-ignore-db=mysql
重啟 → 建立同步帳號:
GRANT REPLICATION SLAVE, RELOAD, SUPER ON *.* TO 'back'@'192.168.0.1' IDENTIFIED BY 'back';
FLUSH PRIVILEGES;
[mysqld]
master-host = 192.168.0.2
master-user = back
master-password = back
master-port = 3306
replicate-do-db=test
replicate-ignore-db=mysql
重啟
-- On B
SHOW MASTER STATUS; -- 記錄 File、Position
-- On A
SLAVE STOP;
CHANGE MASTER TO MASTER_LOG_FILE='updatelog.000028', MASTER_LOG_POS=13753;
SLAVE START;
auto_increment_increment、auto_increment_offset 錯開(如 A: 1,3,5... B: 2,4,6...)log-slave-updates 需開啟,否則 B 的寫入不會回傳給 A在 A 寫入 → 檢查 B 出現;在 B 寫入 → 檢查 A 出現。雙向同步完成!