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

Windows 下 MySQL 主從同步備份圖文教程:從帳號建立到驗證全流程

     編輯:MySQL 綜合教學

環境規劃

角色OSIPMySQL 版本datadir
Master (A)Windows Server 2003192.168.100.14.1.20C:\MySQL\data
Slave (B)Windows Server 2003192.168.100.24.1.20C:\MySQL\data

現代提示: Windows Server 2003 / MySQL 4.1 已停止支援,**生產請升級至 Windows Server 2019/2022 + MySQL 8.0**。本文保留原版邏輯供教學參考,關鍵差異處標註現代做法。

步驟一:Master 建立複寫帳號


-- 登入 Master MySQL
mysql -u root -p

-- 建立帳號,限制來源 IP
GRANT REPLICATION SLAVE, RELOAD, SUPER ON *.* 
  TO 'backup'@'192.168.100.2' IDENTIFIED BY '1234';
FLUSH PRIVILEGES;

-- ⚠ MySQL 4.1 密碼雜湊相容性
SET PASSWORD FOR 'backup'@'192.168.100.2' = OLD_PASSWORD('1234');
-- 現代 8.0:CREATE USER ... IDENTIFIED WITH caching_sha2_password BY '...';

步驟二:初始資料同步(關鍵:凍結寫入)

  1. Master:FLUSH TABLES WITH READ LOCK;(保持視窗不關閉)
  2. 複製 C:\MySQL\data 整個目錄至 Slave 同路徑
  3. Master:UNLOCK TABLES;

現代做法: 使用 mysqldump --single-transaction --master-data=2 熱備份,無需鎖表停寫。

步驟三:Master 啟用 Binlog

編輯 my.ini([mysqld] 區段)


[mysqld]
server-id=1
log-bin=c:\mysql-bin.log
# 現代建議:
# binlog_format=ROW
# gtid_mode=ON
# enforce_gtid_consistency=ON
# expire_logs_days=7

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

步驟四:Slave 配置 my.ini


[mysqld]
server-id=2
master-host=192.168.100.1
master-user=backup
master-password=1234
master-port=3306
master-connect-retry=60

# 可選:僅同步指定庫
replicate-do-db=backup

# 現代 8.0 棄用 master-host 等參數,改用 CHANGE MASTER TO

步驟五:啟動 Slave 並驗證

  1. 重啟 Slave MySQL 服務
  2. 檢查錯誤日誌:C:\MySQL\data\hostname.err
  3. 登入 Slave 執行:SHOW SLAVE STATUS\G

成功標誌:

  • Slave_IO_Running: Yes
  • Slave_SQL_Running: Yes
  • Seconds_Behind_Master: 0

步驟六:測試同步


-- Master 執行
USE testdb;
CREATE TABLE t_sync (id INT PRIMARY KEY AUTO_INCREMENT, val VARCHAR(20), ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP);
INSERT INTO t_sync (val) VALUES ('test_from_master');

-- Slave 查詢(應立即可見)
SELECT * FROM testdb.t_sync;

關鍵維護:master.info 檔案機制

舊版將複寫配置持久化於 data/master.info。**修改複寫參數前必須刪除此檔並重啟**,否則新配置不生效。現代 8.0 存儲於系統表 mysql.slave_master_info,透過 CHANGE MASTER TO 管理。

常見故障排查

現象可能原因排查步驟
IO_Running: No網路不通/帳號密碼錯/防火牆Slave 端 telnet 192.168.100.1 3306、檢查錯誤日誌 Last_IO_Error
SQL_Running: No資料衝突/結構不一致/大事務檢查 Last_SQL_Error、對比表結構 SHOW CREATE TABLE
Seconds_Behind_Master 增長從庫效能不足/長查詢阻塞SHOW PROCESSLIST 找阻塞、升級硬體、優化索引

現代化遷移建議

  1. 升級至 MySQL 8.0 + GTID + ROW 格式
  2. 使用 CHANGE MASTER TO ... MASTER_AUTO_POSITION=1 替代 my.ini 靜態配置
  3. 部署 Orchestrator / MHA 實現自動故障切換
  4. 從庫啟用 read_only=ON + super_read_only=ON
  5. 備份在從庫執行:XtraBackup 物理熱備 + Binlog 歸檔
Windows 下 MySQL 複寫邏輯與 Linux 一致,**核心在於:server-id 唯一、Binlog 格式一致、網路互通、初始資料一致、GTID 自動定位**。舊版 my.ini 靜態配置已淘汰,請全面轉向動態 CHANGE MASTER TO 管理。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved