首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL 主從同步搭建實戰:從配置到故障排查

     編輯:MySQL 資料庫相關知識

環境信息

  • 版本:MySQL 4.1.7-standard-log (雙端一致)
  • Master:RedHat 9.0, IP 192.168.0.1
  • Slave:RedHat 7.3, IP 192.168.0.2

Master 配置 (my.cnf)

[mysqld]
log-bin = mysql-bin
server-id = 1

Slave 配置 (my.cnf)

[mysqld]
log-bin = mysql-bin
server-id = 2
master-host = 192.168.0.1
master-user = rep
master-password = rep
master-port = 3306
master-connect-retry = 60

初始化數據同步步驟

  1. Master:清空舊 binlog(或備份),打包全部數據目錄(含 ibdata*)
  2. Slave:清空舊 binlog,解壓 Master 數據包覆蓋自身數據目錄
  3. Master:啟動,創建同步賬號
    GRANT REPLICATION SLAVE ON *.* TO 'rep'@'%' IDENTIFIED BY 'rep'; FLUSH PRIVILEGES;
  4. Slave:啟動,檢查同步狀態
    SHOW SLAVE STATUS\G

常見故障與解決

現象原因解決
Slave_IO_Running: No網絡不通/賬號密碼錯誤/防火牆telnet master 3306 / 檢查 GRANT / 開放端口
Slave_SQL_Running: NoSQL 執行錯誤(主鍵衝突/表不存在等)查看 Last_Error / 手動修正數據 / SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1
Seconds_Behind_Master 偏大Slave 執行慢/長事務/鎖等待優化 Slave 查詢 / 升級硬件 / 並行複製(5.6+)
Binlog 序號不匹配重新初始化未清理舊 binlog雙端 RESET MASTER / RESET SLAVE 後重新同步

關鍵調試命令

-- Master 查看 binlog
SHOW MASTER STATUS;
SHOW BINLOG EVENTS IN 'mysql-bin.000001';

-- Slave 重新定位同步點
STOP SLAVE;
CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=123;
START SLAVE;

-- 監控同步延遲
SHOW SLAVE STATUS\G
-- 關注 Seconds_Behind_Master, Slave_IO_Running, Slave_SQL_Running

生產環境建議 (現代版本 5.7/8.0)

  • 使用 GTID 模式 (gtid_mode=ON) 簡化故障轉移
  • 啟用半同步複製 (rpl_semi_sync_master=ON) 保證數據不丟失
  • 配置多線程 Slave (slave_parallel_workers=4) 提升回放性能
  • 監控系統接入 Prometheus + Grafana 告警
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved