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

MySQL 主從同步跨平台實戰:Windows Master → Linux Slave 異構環境配置全記錄

     編輯:MySQL 資料庫相關知識

環境資訊

角色OSMySQLIP
MasterWindows5.0.51192.168.1.156
SlaveLinux5.0.67192.168.1.154

同步資料庫:account

核心原理

Slave 兩執行緒:

  • I/O Thread:連 Master 3306 讀取 binlog → 寫入本地 relay-log
  • SQL Thread:讀 relay-log → 重放 SQL → 完成同步

Master 配置 (my.cnf/my.ini)

[mysqld]
server-id = 1
log-bin = d:/log-bin.log
binlog-do-db = account

建立同步專用帳號:

GRANT REPLICATION SLAVE ON *.* TO 'sync_user'@'192.168.1.154' IDENTIFIED BY 'password';
FLUSH PRIVILEGES;

Slave 配置 (my.cnf)

[mysqld]
server-id = 2
master-host = 192.168.1.156
master-user = sync_user
master-password = password
master-port = 3306
replicate-do-db = account

啟動同步流程

  1. Master 完整備份 account → 還原到 Slave
  2. 重啟雙端 MySQL
  3. Master 執行 SHOW MASTER STATUS; 記錄 File、Position
  4. Slave 執行:
    SLAVE STOP;
    CHANGE MASTER TO MASTER_LOG_FILE='log-bin.000003', MASTER_LOG_POS=12345;
    SLAVE START;
  5. 驗證:SHOW SLAVE STATUS\G 確認 Slave_IO_Running: Yes、Slave_SQL_Running: Yes

避坑實錄:修改 log-bin 路徑後同步中斷

現象:Master 修改 log-bin 路徑重啟後,Slave 報錯 Could not find first log file name in binary log index

原因:Slave 的 master.info 記錄了舊 binlog 檔名與位置,路徑變更導致找不到。

解決:停止 Slave → 刪除 master.info → 重啟 Slave → 重新 CHANGE MASTER TO 指向新 binlog 起點。

關鍵檔案說明

  • master.info:記錄 Master 連線資訊、binlog 檔名/位置
  • relay-log.info:記錄 SQL 執行進度
  • relay-log.*:從 Master 複製的中繼日誌
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved