| 項目 | Master | Slave |
|---|---|---|
| OS | Ubuntu 14.04 LTS | |
| MySQL | 5.5.37 | |
| IP | 192.168.63.133 | 192.168.63.134 |
| Port | 3306 | |
| 同步庫 | backup | |
| 複製帳號 | suxh / 111111 | |
在啟動複製前,確保 Slave 擁有與 Master 完全一致的 backup 庫資料。可用 mysqldump 導出並導入,或直接複製 datadir(需停庫)。
[mysqld] # 啟用二進制日誌,採用 MIXED 格式兼顧效能與一致性 binlog_format = mixed # 忽略系統庫,僅同步業務庫 binlog-ignore-db = mysql binlog-do-db = backup # 唯一 server_id(1~2^32-1),Master 預設 1 server-id = 1
修改後重啟:service mysql restart
MySQL 5.1.7+ 不再支援配置檔指定 master-host 等參數,僅需設定唯一 server-id:
[mysqld] server-id = 2
重啟:service mysql restart
mysql -u root -p CHANGE MASTER TO MASTER_HOST = '192.168.63.133', MASTER_USER = 'suxh', MASTER_PASSWORD = '111111', MASTER_PORT = 3306, MASTER_LOG_FILE = 'mysql-bin.000001', -- 在 Master 執行 SHOW MASTER STATUS 獲取 MASTER_LOG_POS = 107; START SLAVE;
SHOW SLAVE STATUS\G
關鍵指標均為 Yes 表示正常:
Slave_IO_Running: YesSlave_SQL_Running: YesSeconds_Behind_Master: 0| 現象 | 可能原因 | 處理 |
|---|---|---|
| IO_Running = No | 網路不通/帳號密碼錯誤/MASTER_LOG_FILE/POS 錯誤 | 檢查防火牆、重新 CHANGE MASTER |
| SQL_Running = No | 執行衝突/重複鍵/外鍵約束 | 查看 Last_SQL_Error,手動修復或跳過 |
| Seconds_Behind_Master 偏大 | Slave 機能不足/長事務/大批量 DML | 優化 SQL、升級硬體、調整 parallel replication |
log_slave_updates=1 支援鏈式複製sync_binlog=1、innodb_flush_log_at_trx_commit=1 保證持久化Seconds_Behind_Master、Slave_IO_Running、Slave_SQL_Running 告警