log-bin記錄所有數據變更master.info(連接參數+復制坐標)、relay-log.info(中繼日志進度)| Slave版本 | 兼容Master版本 | 備註 |
|---|---|---|
| 3.23.x | 僅3.23.x | 無法連接4.x Master |
| 4.0.0 | 僅4.0.0 | 嚴格版本鎖定 |
| 4.0.1+ | 3.23.x / 4.x (Master版本 ≥ Slave版本) | 推薦同版本部署 |
黃金法則:同版本部署,優先升級Slave再升級Master,保持Master版本號 ≥ Slave版本號。
FLUSH TABLES WITH READ LOCK;SHOW MASTER STATUS; 記錄File、Positiontar czf /backup/mysql_snapshot.tar.gz /var/lib/mysqlUNLOCK TABLES;[mysqld]
server-id=1 # 全局唯一,1..2^32-1
log-bin=mysql-bin # 啟用二進制日志
binlog-format=ROW # 推薦ROW格式,避免非確定性函數導致不一致
sync_binlog=1 # 每次提交刷盤,防數據丟失
# 可選:過濾不需同步的庫
binlog-ignore-db=mysql
binlog-ignore-db=test
重啟生效。若已有Binlog,執行RESET MASTER;清理舊日志重新開始。
CREATE USER 'repl'@'%' IDENTIFIED BY 'StrongPass2024!';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';
FLUSH PRIVILEGES;
[mysqld]
server-id=2
relay-log=mysql-relay-bin # 顯式命名避免主機名變更導致中斷
relay-log-index=mysql-relay-bin.index
read-only=1 # 防止誤寫入Slave
# 啟動後動態配置(MySQL 5.6+ 推薦 CHANGE MASTER TO 替代配置文件)
CHANGE MASTER TO
MASTER_HOST='10.0.0.1',
MASTER_USER='repl',
MASTER_PASSWORD='StrongPass2024!',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=154,
MASTER_CONNECT_RETRY=30,
MASTER_RETRY_COUNT=100000;
啟動復制:START SLAVE; 驗證:SHOW SLAVE STATUS\G 確認Slave_IO_Running: Yes、Slave_SQL_Running: Yes、Seconds_Behind_Master: 0。
中間節點同時配置log-bin與log-slave-updates=1,將重放的事務寫入自身Binlog,下游Slave指向中間節點。
# Node A 額外配置
server-id=1
log-bin=mysql-bin
log-slave-updates=1
auto-increment-increment=2
auto-increment-offset=1
# Node B 額外配置
server-id=2
log-bin=mysql-bin
log-slave-updates=1
auto-increment-increment=2
auto-increment-offset=2
關鍵:auto_increment_increment/offset防主鍵衝突;應用層必須按業務分流寫入(如按用戶ID奇偶分庫),避免雙寫衝突。
| 命令 | 用途 |
|---|---|
SHOW SLAVE STATUS\G |
核心健康檢查:IO/SQL線程狀態、延遲秒數、錯誤信息 |
STOP/START SLAVE [IO_THREAD|SQL_THREAD] |
線程級控制:備份時暫停SQL線程獲取一致性快照 |
PURGE BINARY LOGS TO 'mysql-bin.000123'; |
Master清理已被所有Slave消費的Binlog |
CHANGE MASTER TO ... |
動態調整復制參數(切換Master、跳過錯誤事務等) |
MASTER_CONNECT_RETRYSHOW SLAVE STATUS查看Last_SQL_Error,若可跳過:STOP SLAVE; SET GLOBAL sql_slave_skip_counter=1; START SLAVE;pt-table-checksum/pt-table-sync巡檢修復STOP SLAVE; RESET SLAVE; CHANGE MASTER TO ...; START SLAVE; 重拉全量