MySQL 主從同步是目前企業級應用中最廣泛採用的資料庫架構之一,技術成熟度高、配置相對簡單。特別是針對高併發讀寫場景,透過「主寫從讀」的架構設計,能有效分散資料庫負載、提升系統整體效能與可用性。
MySQL 複制的核心流程包含三個關鍵階段:

編輯 /etc/my.cnf,關鍵參數配置如下:
[mysqld] # 啟用二進制日誌 log-bin = mysql-bin # 主庫唯一標識,集群內不可重複 server-id = 1 # 二進制日誌存放路徑與前綴 log-bin=/home/mysql/logs/binlog/bin-log # 單個 binlog 文件最大體積 max_binlog_size = 500M # 事務緩存大小 binlog_cache_size = 128K # 指定同步的數據庫(多個另起一行) binlog-do-db = adb # 排除同步的系統庫 binlog-ignore-db = mysql # 從庫同步時同步更新自身 binlog log-slave-updates # binlog 保留天數 expire_logs_days = 2 # 混合日誌格式,兼容性與效能平衡 binlog_format = "MIXED"
參數深度解析:
server-id:集群內每個節點必須唯一,配置文件中僅保留第一個生效binlog-do-db / binlog-ignore-db:精確控制同步範圍,避免系統表同步造成衝突binlog_format=MIXED:結合 Statement 與 Row 模式優點,有效防止主鍵衝突問題配置完成後重啟 MySQL,並創建專用同步賬號:
-- 創建同步用戶 GRANT REPLICATION SLAVE ON *.* TO 'slave'@'%' IDENTIFIED BY '111111'; FLUSH PRIVILEGES;
查看主庫同步狀態(記錄 File 與 Position,後續從庫配置需用到):
SHOW MASTER STATUS; +------------------+----------+--------------+------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | +------------------+----------+--------------+------------------+ | mysql-bin.000009 | 196 | | | +------------------+----------+--------------+------------------+
關鍵提醒:執行此命令後切勿再操作主庫,避免位點發生變化導致同步起點不準確。
修改 /etc/my.cnf 設置唯一 server-id:
[mysqld] server-id = 2
配置同步連接參數並啟動:
CHANGE MASTER TO MASTER_HOST='192.168.1.2', MASTER_USER='slave', MASTER_PASSWORD='111111', MASTER_LOG_FILE='mysql-bin.000009', MASTER_LOG_POS=196; START SLAVE;
SHOW SLAVE STATUS\G;
重點檢查兩個關鍵指標必須均為 Yes:
Slave_IO_Running:I/O 線程正常接收主庫日誌Slave_SQL_Running:SQL 線程正常重放執行若任一為 No 或 Connecting,需根據 Last_IO_Error / Last_SQL_Error 排查具體原因。
# 多庫排除同步 binlog-ignore-db = mysql binlog-ignore-db = test binlog-ignore-db = information_schema # 僅同步指定庫 binlog-do-db = game # 日誌保留 10 天 expire_logs_days = 10 # 每 5 次事務刷盤一次,平衡效能與安全 sync_binlog = 5 # 推薦混合模式 binlog_format = mixed
-- 停止同步 STOP SLAVE; -- 設置重連間隔(秒) CHANGE MASTER TO MASTER_CONNECT_RETRY=50; -- 啟動同步 START SLAVE;
可部署於從庫,定時檢測同步健康度:

MySQL 主從同步作為經典高可用架構,掌握其原理與配置細節對 DBA 與後端工程師至關重要。生產環境建議結合 MHA、Orchestrator 或 GTID 模式進一步提升故障自動切換能力。文中配置參數針對 5.6+ 版本優化,實際部署請根據業務場景調整。