首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

CentOS 6 MySQL 5.5 主從複製 (Master-Slave) 配置全流程實戰

     編輯:MySQL 綜合教學

架構與前提

  • Master (192.168.1.100) → Slave (192.168.1.101)
  • 雙邊版本一致 (5.5.x),表結構、初始數據一致 (建議 Master 熱備份恢復到 Slave)。
  • 網絡互通 3306,防火牆放行。
  • 關閉 SELinux 或配置策略。

Master 配置 (/etc/my.cnf)

[mysqld]
server-id = 1
log-bin = /var/lib/mysql/binlog/mysql-bin
binlog-do-db = business_db      # 僅同步指定庫 (可多行)
# binlog-ignore-db = test       # 忽略庫
binlog_format = ROW
sync_binlog = 1
innodb_flush_log_at_trx_commit = 1
expire_logs_days = 7
max_binlog_size = 500M

重啟:service mysqld restart

Master 建立同步賬號

GRANT REPLICATION SLAVE, RELOAD, SUPER ON *.* TO 'repl'@'%' IDENTIFIED BY 'repl_pass_123' WITH GRANT OPTION;
FLUSH PRIVILEGES;
SHOW MASTER STATUS;
-- 記錄 File (如 mysql-bin.000001) 和 Position (如 107)

Slave 配置 (/etc/my.cnf)

[mysqld]
server-id = 2
relay-log = /var/lib/mysql/relaylog/relay-bin
read-only = 1                 # 防止誤寫入
# replicate-do-db = business_db  # 可選,Master 已過濾通常無需重複
log_slave_updates = 1         # 若 Slave 又是其他 Slave 的 Master

重啟:service mysqld restart

Slave 配置同步參數並啟動

CHANGE MASTER TO
  MASTER_HOST='192.168.1.100',
  MASTER_USER='repl',
  MASTER_PASSWORD='repl_pass_123',
  MASTER_PORT=3306,
  MASTER_LOG_FILE='mysql-bin.000001',
  MASTER_LOG_POS=107,
  MASTER_CONNECT_RETRY=10;

START SLAVE;

驗證同步狀態

SHOW SLAVE STATUS\G
-- 關鍵指標
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Seconds_Behind_Master: 0
Last_IO_Error: 
Last_SQL_Error: 
  • 均為 Yes 且 Seconds_Behind_Master=0 → **同步正常**。

常見故障排查

現象原因解決
Slave_IO_Running=Connecting網絡不通/賬號密碼錯/防火牆/MASTER_HOST 錯誤檢查連通性、SHOW GRANTS、Master 日誌
Slave_SQL_Running=No, Last_SQL_Error: Duplicate entry主鍵衝突/Slave 獨立寫入/重複執行跳過錯誤: SET GLOBAL sql_slave_skip_counter=1; START SLAVE; 或重新搭建
Seconds_Behind_Master 巨大/增長Slave 執行慢/大事務/硬件差/單線程瓶頸優化 Slave 索引/硬件、升級 5.6+ 多線程複製、關閉不必要從庫查詢
Relay Log 損壞/丟失磁碟故障/手動刪除STOP SLAVE; RESET SLAVE; 重新 CHANGE MASTER TO ... (需 Master 仍保留 binlog)

運維最佳實踐

  1. **監控告警**:Slave_IO_Running, Slave_SQL_Running, Seconds_Behind_Master > 300 觸發報警。
  2. 2. **定期校驗**:pt-table-checksum (Percona) 檢測主從數據一致性。 3. **備份策略**:從庫做全量備份 (不影響主庫)、binlog 定期歸檔。 4. **故障切換**:MHA / Orchestrator / GTID (5.6+) 自動化主從切換。 5. **版本升級**:先升 Slave、驗證、再升 Master,或藍綠部署。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved