萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 程式設計 >  >> 資料庫 >> MySQL 教學

MySQL 主從複寫完整部署指南:從配置到運維

架構規劃與前置作業

主從複寫採用非同步模式,主庫寫入二進位日誌,從庫透過 I/O 執行緒拉取並寫入中繼日誌,再由 SQL 執行緒重放。部署前請確認:

  • 主從版本一致(建議 5.7+ 或 8.0+)
  • 網路互通,防火牆開放 3306
  • 主庫啟用 log_bin,配置唯一 server-id

主庫配置步驟

1. 建立複寫專用帳號

GRANT REPLICATION SLAVE ON *.* TO 'repl_user'@'192.168.0.%' IDENTIFIED BY 'StrongPass#2024';
FLUSH PRIVILEGES;

※ MySQL 4.1+ 使用 REPLICATION SLAVE,舊版曾用 FILE 權限。

2. 修改 /etc/my.cnf(主庫)

[mysqld]
server-id = 1
log-bin = mysql-bin
binlog-do-db = target_db          # 需同步的資料庫,多行重複設定
binlog-ignore-db = mysql,sys,performance_schema  # 排除系統庫

從庫配置步驟

1. 修改 /etc/my.cnf(從庫)

[mysqld]
server-id = 2
log-bin = mysql-bin                # 開啟從庫二進位日誌,利於鏈式複寫
relay-log = relay-bin
read-only = 1                      # 防止誤寫入
replicate-do-db = target_db        # 需同步的資料庫

2. 設定主庫連線資訊(5.6+ 採用動態設定)

CHANGE MASTER TO
  MASTER_HOST='192.168.0.10',
  MASTER_USER='repl_user',
  MASTER_PASSWORD='StrongPass#2024',
  MASTER_PORT=3306,
  MASTER_AUTO_POSITION=1;          # GTID 模式,若無 GTID 請指定 MASTER_LOG_FILE/MASTER_LOG_POS

3. 啟動複寫並驗證

START SLAVE;
SHOW SLAVE STATUS\G

關鍵指標:Slave_IO_Running: Yes、Slave_SQL_Running: Yes、Seconds_Behind_Master: 0。

常用運維指令速查

場景指令
查看主庫狀態SHOW MASTER STATUS;
查看從庫連線SHOW SLAVE HOSTS;
暫停/恢複寫STOP SLAVE; / START SLAVE;
單獨控制 I/O 或 SQL 執行緒STOP SLAVE IO_THREAD; START SLAVE SQL_THREAD;
跳過錯誤事件SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1; START SLAVE;
動態變更主庫CHANGE MASTER TO MASTER_HOST=..., MASTER_PORT=...;
清理已同步 BinlogPURGE BINARY LOGS BEFORE '2024-01-01';
重置從庫狀態RESET SLAVE ALL;

實戰避坑指南

  1. 資料一致性基線:首次建立從庫時,必須在主庫執行 FLUSH TABLES WITH READ LOCK 並備份完整資料目錄(含 ibdata1、*.ibd、*.frm 等),否則後續複寫會因資料差異報錯。
  2. my.cnf 版本一致:主從參數(如 sql_mode、字元集)不一致會導致複寫中斷。
  3. 監控日誌:mysqld.log、relay-log.info、master.info 是排查複寫延遲、錯誤的關鍵。
copyright © 萬盛學電腦網 all rights reserved