MySQL 3.23.15+ 引入的 Replication 功能,支援單向主從、雙向互備等多種拓撲,是實現高可用、讀寫分離、異地災備的基石。本文以 Windows 2000 + MySQL 4.0 為例,詳細記錄雙節點互備配置全流程,原理同樣適用於 Linux 及新版 MySQL。
| 角色 | IP | Server ID | 備註 |
|---|---|---|---|
| Node A (Master/Slave) | 10.10.10.22 | 1 | 雙向同步 |
| Node B (Master/Slave) | 10.10.10.53 | 2 | 雙向同步 |
同步專用資料庫:backup;同步帳號:backup@IP,密碼 1234(生產環境請使用強密碼)。
-- 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;
[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
[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
SHOW MASTER STATUS; 記錄 File/PositionSHOW SLAVE STATUS\G 確認 Slave_IO_Running: Yes、Slave_SQL_Running: YesSTOP SLAVE、刪除 master.info、再重新配置*.err 錯誤導致 SQL 線程停止時,修正後執行 START SLAVEmaster-connect-retry 與 slave_net_timeout187 萬條記錄批量插入,單向同步約 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 等成熟高可用方案。