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

MySQL 主從同步與雙主熱備架構完整部署指南

     編輯:MySQL 資料庫相關知識

概述

MySQL 3.23.15+ 引入的 Replication 功能,支援單向主從、雙向互備等多種拓撲,是實現高可用、讀寫分離、異地災備的基石。本文以 Windows 2000 + MySQL 4.0 為例,詳細記錄雙節點互備配置全流程,原理同樣適用於 Linux 及新版 MySQL。

環境規劃

角色IPServer ID備註
Node A (Master/Slave)10.10.10.221雙向同步
Node B (Master/Slave)10.10.10.532雙向同步

同步專用資料庫:backup;同步帳號:backup@IP,密碼 1234(生產環境請使用強密碼)。

雙向同步配置步驟

1. 兩節點均建立同步帳號與資料庫

-- Node A 執行
GRANT FILE ON *.* TO 'backup'@'10.10.10.53' IDENTIFIED BY '1234';
CREATE DATABASE backup;

-- Node B 執行
GRANT FILE ON *.* TO 'backup'@'10.10.10.22' IDENTIFIED BY '1234';
CREATE DATABASE backup;

2. Node A 配置 (my.ini)

[mysqld]
server-id=1
log-bin=mysql-bin
binlog-do-db=backup

# 作為 Slave 指向 B
master-host=10.10.10.53
master-user=backup
master-password=1234
master-port=3306
master-connect-retry=10
replicate-do-db=backup

3. Node B 配置 (my.ini)

[mysqld]
server-id=2
log-bin=mysql-bin
binlog-do-db=backup

# 作為 Slave 指向 A
master-host=10.10.10.22
master-user=backup
master-password=1234
master-port=3306
master-connect-retry=60
replicate-do-db=backup

4. 啟動與驗證

  1. 重啟兩側 MySQL 服務
  2. Node A 執行 SHOW MASTER STATUS; 記錄 File/Position
  3. Node B 執行 SHOW SLAVE STATUS\G 確認 Slave_IO_Running: Yes、Slave_SQL_Running: Yes
  4. 雙向寫入測試:A 插入數據 → B 可見;B 插入 → A 可見

關鍵注意事項

  • server-id 唯一:集群內不可重複
  • master.info 持久化:修改 Slave 參數前必須 STOP SLAVE、刪除 master.info、再重新配置
  • 錯誤處理:出現 *.err 錯誤導致 SQL 線程停止時,修正後執行 START SLAVE
  • 版本一致:主從版本建議一致,避免 Binlog 格式不兼容
  • 網絡延遲:跨機房部署需評估 master-connect-retry 與 slave_net_timeout

效能基準 (文中測試數據)

187 萬條記錄批量插入,單向同步約 2,500 rows/sec。實際吞吐受限於網絡帶寬、磁盤 I/O、Binlog 格式 (ROW/STATEMENT/MIXED) 及 sync_binlog 策略。

現代化替代方案

MySQL 5.6+ 推薦使用 GTID (Global Transaction ID) 簡化故障轉移;5.7+ 支援多源複製;8.0 引入組複制 (Group Replication) 實現強一致性集群。生產環境優先考慮 MHA、Orchestrator、ProxySQL 等成熟高可用方案。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved