本文記錄基於雙節點(Master 192.0.0.1 / Slave 192.0.0.2)的主從同步配置全流程,強調版本兼容性原則:主從版本最好一致;若不一致,Slave 版本必須高於 Master。
/etc/my.cnf ([mysqld])[mysqld]
log-bin=mysql-bin
server-id=1
binlog-do-db=extmail
binlog-ignore-db=mysql,test
參數說明:log-bin 啟用二進制日誌(必須);server-id 範圍 1~2³²-1;binlog-do-db 指定同步庫;binlog-ignore-db 排除庫。
GRANT REPLICATION SLAVE ON *.* TO 'abc'@'192.0.0.2' IDENTIFIED BY '123';
service mysql restart
mysqldump --master-data extmail > extmail_backup_20071120.sql
關鍵:必須加 --master-data,輸出文件會包含 CHANGE MASTER TO 所需的 Binlog 文件名與位點。
SHOW MASTER STATUS;
-- 記錄 File (如 mysql-bin.000002) 與 Position (如 79)
/etc/my.cnf ([mysqld])server-id=2
master-host=192.0.0.1
master-port=3306
master-user=abc
master-password=123
master-connect-retry=60
注意:server-id 不能與 Master 及其他 Slave 重複。
mysqladmin create extmail
mysql extmail < extmail_backup_20071120.sql
service mysql restart
mysql> STOP SLAVE;
mysql> CHANGE MASTER TO
MASTER_HOST='192.0.0.1',
MASTER_USER='abc',
MASTER_PASSWORD='123',
MASTER_LOG_FILE='mysql-bin.000002',
MASTER_LOG_POS=79;
mysql> START SLAVE;
SHOW PROCESSLIST;
-- 或 SHOW SLAVE STATUS\G 確認 Slave_IO_Running / Slave_SQL_Running = Yes
Seconds_Behind_Master,設置告警機制。