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

MySQL 主從複製 (Replication) 建立從庫完整操作手冊

     編輯:MySQL 資料庫相關知識

MySQL 主從複製可實現讀寫分離、即時備份、離線分析等。本文提供從「零」建立從庫的標準化步驟、關鍵參數、驗證指令與常見故障處理。

前置條件

  • 主庫啟用 log_bin,設定唯一 server-id。
  • 主從版本相容 (建議相同大版本),網路互通 3306。
  • 主庫建立專用 replication 帳號。

步驟 1:主庫配置 (my.cnf)

[mysqld]
server-id = 100
log_bin = mysql-bin
binlog_format = ROW          -- 推薦 ROW 格式,避免非確定性函數導致從庫不一致
expire_logs_days = 7
max_binlog_size = 500M
sync_binlog = 1              -- 最高持久性,效能略有影響
innodb_flush_log_at_trx_commit = 1

重啟主庫:systemctl restart mysqld。

步驟 2:建立 Replication 使用者

GRANT REPLICATION SLAVE ON *.* TO 'repl'@'192.168.0.%' IDENTIFIED BY 'StrongReplPass!';
FLUSH PRIVILEGES;

步驟 3:查看主庫 Binlog 位置

mysql> SHOW MASTER STATUS\G
*************************** 1. row ***************************
File: mysql-bin.000005
Position: 251651
Binlog_Do_DB:
Binlog_Ignore_DB:
1 row in set (0.00 sec)

記錄 File 與 Position,從庫配置需用到。

步驟 4:從庫配置 (my.cnf)

[mysqld]
server-id = 101              -- 必須與主庫不同
relay_log = mysql-relay-bin
log_slave_updates = 1        -- 若從庫再做從庫必開
read_only = 1                -- 防止誤寫入
skip_slave_start = 1         -- 手動啟動,避免配置前自動連線報錯

重啟從庫。

步驟 5:設定主庫連線資訊並啟動

CHANGE MASTER TO
  MASTER_HOST = '192.168.0.232',
  MASTER_USER = 'repl',
  MASTER_PASSWORD = 'StrongReplPass!',
  MASTER_LOG_FILE = 'mysql-bin.000005',
  MASTER_LOG_POS = 251651;

START SLAVE;

步驟 6:驗證同步狀態

SHOW SLAVE STATUS\G

關鍵指標:

  • Slave_IO_Running: Yes — I/O 執行緒正常接收 Binlog。
  • Slave_SQL_Running: Yes — SQL 執行緒正常重放。
  • Seconds_Behind_Master: 0 — 延遲秒數,0 表示即時同步。
  • Last_IO_Error / Last_SQL_Error — 為空表示無錯誤。

常見故障與處理

現象原因處理
IO_Running=No, Connect_Error網路/防火牆/帳號密碼錯誤檢查 3306 通達性、GRANT IP 段、密碼
SQL_Running=No, Duplicate entry主鍵衝突/手動寫入從庫STOP SLAVE; SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1; START SLAVE; (謹慎使用)
Seconds_Behind_Master 偏大大事務/慢查詢/硬體瓶頸優化慢 SQL、提升從庫硬體、改用並行複制 (5.6+ slave_parallel_workers)
Binlog 格式不匹配主庫 ROW,從庫 STATEMENT統一設定 binlog_format=ROW

進階:GTID 複製 (MySQL 5.6+)

[mysqld]
gtid_mode = ON
enforce_gtid_consistency = ON
log_slave_updates = 1

啟動後無需指定 MASTER_LOG_FILE/POS,改用 MASTER_AUTO_POSITION=1,自動定位,支援自動容錯移轉 (MHA/Orchestrator)。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved