| 誤區 | 正確認知 |
| 復制是同步的 | MySQL 復制本質是異步的,存在毫秒到秒級延遲;半同步需插件支持。 |
| Slave 必須開啟 Binlog | 純從庫無需開啟 Binlog;僅當 Slave 同時作為其他實例的 Master(鏈式/雙主)時才開啟。 |
| server-id 可重複 | 拓撲內所有實例 server-id 必須全局唯一,否則報錯 Fatal error: equal MySQL server ids。 |
三、1062 錯誤根因與解決
現象
Last_SQL_Error: Error 'Duplicate entry 'd36ad91bff36308de540bbd9ae6f4279' for key 'PRIMARY''
on query: INSERT INTO `lee_sessions` ...
根因分析
- 初期使用
mysqldump --single-transaction 熱備份主庫快照建立從庫。
--single-transaction 僅保證事務一致性,不鎖表、不記錄 Binlog 位點,導致備份完成時 Binlog 已推進,從庫啟動復制時位點偏早,重放已執行事務 → 主鍵衝突。
- InnoDB 表
lee_sessions 極高頻寫入,衝突概率極大。
解決方案:改用 --master-data=1 記錄精確位點
mysqldump -uroot -p --quick --flush-logs --master-data=1 --single-transaction myproject > myproject.sql
--master-data=1:導出文件包含 CHANGE MASTER TO MASTER_LOG_FILE='...', MASTER_LOG_POS=...; 可執行語句。
--master-data=2:位點語句被註釋,需手動提取。
- 注意:
--master-data 會隱式加 --lock-all-tables,不可與 --single-transaction 共用。此處去掉 --single-transaction,接受短暫全局鎖換取位點精確。
提取位點並配置從庫
grep "CHANGE MASTER" myproject.sql
# 輸出:CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000008', MASTER_LOG_POS=106;
# 從庫執行
CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000008', MASTER_LOG_POS=106;
START SLAVE;
長期觀察結果
SHOW SLAVE STATUS\G
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Seconds_Behind_Master: 0
Last_SQL_Error: (空)
# 持續數週無 1062 復發
四、InnoDB 復制最佳實踐清單
- 備份建立從庫:優先
--master-data=1(鎖表)或 XtraBackup 物理熱備(無鎖、含位點),避免 --single-transaction 單獨使用。
- 主庫
sync_binlog=1、innodb_flush_log_at_trx_commit=1,雙 1 配置保證零數據丟失。
- 從庫
read_only=1、super_read_only=1(5.7+),防止誤寫導致分歧。
- 啟用
slave_parallel_workers > 0(5.6+),基於組提交並行回放,降低延遲。
- 監控
Seconds_Behind_Master、Relay_Log_Space、Last_SQL_Error,納入告警。
- 定期
pt-table-checksum 校驗主從一致性,發現不一致立即修復。
- DRBD 層面:
protocol=C 同步寫入,al-extents 調大減少元數據 IO。
五、遷移 MyISAM → InnoDB 關鍵收益
- 事務保障支付/扣款原子性,杜絕「扣款成功訂單失敗」類錯誤。
- 行鎖支撐高併發寫入,MyISAM 表鎖導致寫入串行化。
- 崩潰恢復時間從「小時級修復 MyISAM」降至「秒級 Redo Log 重放」。
- DRBD 切換時 InnoDB 自動恢復無需人工干預,MyISAM 需
myisamchk -r 修復。
「備份位點精確化 + InnoDB 事務語義 + 並行回放 + 持續校驗」四位一體,是 MySQL InnoDB 主從復制穩定運行的核心秘訣。
- 上一篇文章: CentOS MySQL 主從同步配置全流程:GTID 與傳統 Binlog 位點雙模式實戰
- 下一篇文章: MySQL 開啟遠程連接授權全指南:防火牆、安全狗、權限最小化實戰
Copyright ©
程式碼之家 All Rights Reserved