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

MySQL 主從/雙主複制配置標準化流程與常見坑點避坑指南

     編輯:MySQL 綜合教學

MySQL 主從/雙主複制配置標準化流程與常見坑點避坑指南

標準化部署步驟、關鍵參數、驗證指標與故障排查清單,確保複制穩定可靠。

1. 架構規劃

  • 單向主從:Master 寫、Slave 讀(報表/備份)。
  • 雙主(互為主從):雙寫,極易衝突,**生產不建議**,改用 MHA/Orchestrator 單主高可用。
  • GTID 複制:MySQL 5.6+,自動定位位點,故障切換無需手動 CHANGE MASTER。

2. 配置檔模板

# Master (192.168.1.100)
[mysqld]
server-id = 1
log-bin = mysql-bin
binlog_format = ROW
binlog-do-db = test
binlog-ignore-db = mysql
sync_binlog = 1
gtid_mode = ON
enforce_gtid_consistency = ON

# Slave (192.168.1.101)
[mysqld]
server-id = 2
relay_log = relay-bin
replicate-do-db = test
replicate-ignore-db = mysql
gtid_mode = ON
enforce_gtid_consistency = ON
read_only = 1          # 防止誤寫入
super_read_only = 1    # 5.7.8+ 僅 super 權限可寫

3. 標準部署步驟(GTID 模式)

# 1. 主庫建立複制帳號
CREATE USER 'repl'@'192.168.1.%' IDENTIFIED BY 'StrongPass@123';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'192.168.1.%';
FLUSH PRIVILEGES;

# 2. 主庫備份(熱備 xtrabackup 或邏輯備份)
# 此處示範 xtrabackup 流式傳輸
innobackupex --stream=xbstream --user=root --password=xxx ./ | ssh 192.168.1.101 "xbstream -x -C /var/lib/mysql"

# 3. 從庫啟動、設定 GTID 複制
systemctl start mysqld
mysql> CHANGE MASTER TO
  MASTER_HOST='192.168.1.100',
  MASTER_USER='repl',
  MASTER_PASSWORD='StrongPass@123',
  MASTER_AUTO_POSITION=1;  -- GTID 自動定位
START SLAVE;

# 4. 驗證
SHOW SLAVE STATUS\G
# Slave_IO_Running: Yes
# Slave_SQL_Running: Yes
# Retrieved_Gtid_Set / Executed_Gtid_Set 同步推進
# Seconds_Behind_Master: 0

4. 雙主額外配置(若必須使用)

# 兩庫均設定
auto_increment_increment = 2
auto_increment_offset = 1  # Master A
auto_increment_offset = 2  # Master B
# 防止雙寫衝突:業務層路由同一實體單寫、或用行級鎖協調

5. 常見故障速查表

6. 監控關鍵指標

  • Seconds_Behind_Master < 5s(同城機房)。
  • Slave_IO_Running / Slave_SQL_Running = Yes。
  • Relay_Log_Space 不持續增長。
  • Binlog 磁碟佔用、Relay Log 磁碟佔用。

總結

複制穩定性 = 標準化部署 + GTID 自動定位 + 多線程重放 + 唯讀從庫 + 完善監控告警 + 定期演練切換。拒絕雙寫,擁抱單主高可用架構。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
現象排查指令典型原因處置
IO_Running=Notelnet Master 3306; SHOW SLAVE STATUS\G Last_IO_Error網路/防火牆/帳號/SSL開放埠、修正帳號、關閉 SSL 或配置 CA
SQL_Running=NoSHOW SLAVE STATUS\G Last_SQL_Error主鍵衝突/結構差異/外鍵失敗手動修正資料、跳過錯誤 SET GLOBAL sql_slave_skip_counter=1(謹慎)
延遲大Seconds_Behind_Master; SHOW PROCESSLIST長事務/大查詢/硬體瓶頸/單線程重放開啟多線程複制 slave_parallel_workers=4、優化慢查詢、升級從庫
GTID 斷裂SHOW MASTER STATUS; SHOW SLAVE STATUS\G主庫跳過事務/手動刪除 binlog重新同步或用 mysqlbinlog 補充