萬盛學電腦網

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

Windows MySQL 主從複寫配置圖文詳解(含驗證步驟)

在 Windows 環境部署 MySQL 主從複寫,適用於開發測試、小型生產或異地備援。本文提供完整配置步驟、my.ini 設定、資料同步初始化與驗證方法。

架構規劃

角色IPServer ID說明
Master192.168.1.1001寫入主庫
Slave192.168.1.1012唯讀從庫,可多台

前提:兩台機器網路互通、MySQL 版本一致(或 Slave 版本 ≥ Master)、防火牆開放 3306。

1. Master 建立同步帳號

mysql -u root -p
GRANT REPLICATION SLAVE ON *.* TO 'repl_user'@'192.168.1.101' IDENTIFIED BY 'repl_pass';
FLUSH PRIVILEGES;

2. Master 修改 my.ini(通常在安裝目錄或 C:\ProgramData\MySQL\MySQL Server 5.x\)

[mysqld]
server-id = 1
log-bin = mysql-bin
binlog-do-db = test          # 只同步 test 庫,多庫寫多行
binlog-ignore-db = mysql     # 忽略系統庫
read-only = 0                # Master 讀寫皆可

重啟服務:net stop mysql && net start mysql

3. Slave 修改 my.ini

[mysqld]
server-id = 2
log-bin = mysql-bin
relay-log = relay-bin
master-host = 192.168.1.100
master-user = repl_user
master-password = repl_pass
master-port = 3306
master-connect-retry = 60
replicate-do-db = test
replicate-ignore-db = mysql
read-only = 1                # Slave 建議唯讀

注意:MySQL 5.6+ 已棄用 master-host 等參數,改用 CHANGE MASTER TO 動態配置(見下)。

4. 初始化同步資料(冷備份法)

  1. Master 執行:mysqldump -u root -p --all-databases --master-data=2 > master_dump.sql
  2. 將 master_dump.sql 複製到 Slave。
  3. Slave 建庫並導入:mysql -u root -p < master_dump.sql

5. 啟動複寫(MySQL 5.6+ 動態配置方式)

-- Slave 執行
CHANGE MASTER TO
  MASTER_HOST='192.168.1.100',
  MASTER_USER='repl_user',
  MASTER_PASSWORD='repl_pass',
  MASTER_PORT=3306,
  MASTER_LOG_FILE='mysql-bin.000001',  -- 從 dump 檔或 SHOW MASTER STATUS 取得
  MASTER_LOG_POS=107;

START SLAVE;

6. 驗證複寫狀態

-- Master
SHOW MASTER STATUS\G;

-- Slave
SHOW SLAVE STATUS\G;

關鍵指標:

  • Slave_IO_Running: Yes(I/O 執行緒連線正常)
  • Slave_SQL_Running: Yes(SQL 執行緒重放正常)
  • Seconds_Behind_Master: 0(無延遲)

7. 功能測試

-- Master 執行
USE test;
CREATE TABLE t_repl_test (id INT PRIMARY KEY AUTO_INCREMENT, val VARCHAR(20));
INSERT INTO t_repl_test (val) VALUES ('replication test');

-- Slave 查詢
USE test;
SELECT * FROM t_repl_test;

若 Slave 可見新資料,複寫運作正常。

常見問題與解決

現象原因解決
IO_Running: Connecting網路不通/帳號密碼錯/防火牆telnet 檢查 3306、核對帳號、開放防火牆
SQL_Running: No資料衝突/結構不一致/外鍵錯誤檢查 Last_SQL_Error、修正資料或跳過錯誤
Seconds_Behind_Master 偏大Slave 機能不足/長事務/網路延遲優化 Slave 硬體、調大 relay_log_space_limit

進階:多從庫架構

在 Master 依各 Slave IP 建立帳號,各 Slave 設定不同 server-id 即可。所有 Slave 共用 Master 的 binlog,無額外負擔。

copyright © 萬盛學電腦網 all rights reserved