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

MySQL 雙向主從復制實現實時數據同步完整教程

     編輯:MySQL 資料庫相關知識

目標與環境

  • 雙向復制:Master↔Slave 互為主備
  • 網絡中斷恢復後自動追趕同步
  • 環境:RedHat 9,MySQL 4.0.20,雙節點 192.168.37.188/189

安裝與配置文件定位

RPM 安裝後,啟動腳本 /etc/init.d/mysql 讀取 /etc/my.cnf。拷貝模板:

cp /usr/share/mysql/my-medium.cnf /etc/my.cnf

雙節點 my.cnf 關鍵配置

節點 1 (192.168.37.188)

[mysqld]
server-id=1
log-bin
binlog-do-db=backup
# Slave 角色配置
master-host=192.168.37.189
master-user=backup
master-password=1234
master-port=3306

節點 2 (192.168.37.189)

[mysqld]
server-id=2
master-host=192.168.37.188
master-user=backup
master-password=1234
master-port=3306
master-connect-retry=60
replicate-do-db=backup
log-bin
binlog-do-db=backup

關鍵點:雙節點均開啟 log-bin 並設置對方為 Master,實現互備。binlog-do-db 控制同步庫,多庫多行寫。

權限授予(雙向)

# 節點 1 執行
GRANT ALL PRIVILEGES ON backup.* TO 'backup'@'192.168.37.189' IDENTIFIED BY '1234';
FLUSH PRIVILEGES;

# 節點 2 執行
GRANT ALL PRIVILEGES ON backup.* TO 'backup'@'192.168.37.188' IDENTIFIED BY '1234';
FLUSH PRIVILEGES;

MySQL 4.0 建議用 REPLICATION SLAVE 權限,為避免麻烦文中直接授全權限。

驗證同步

  1. 重啟雙側 MySQL
  2. 節點 1 創建庫 backup、表 jintao
  3. 節點 2 執行 USE backup; SHOW TABLES; DESC jintao; 確認結構同步
  4. 雙向寫入測試:任意側增刪改,另一側即時可見

故障排查三板斧

1. SHOW SLAVE STATUS\G

核心看 Slave_IO_Running=Yes、Slave_SQL_Running=Yes。否則檢查網絡、權限、master.info 是否殘留舊配置(需刪除後重啟)。

2. SHOW PROCESSLIST

Slave 端應見兩個 system user 線程:Waiting for master to send event(IO 線程)、Has read all relay log(SQL 線程)。若現 Reconnecting 檢查 Master 存活、網絡、配置。

3. SHOW MASTER STATUS / 錯誤日志

Master 端 Position 不為 0,Binlog Dump 線程狀態正常。錯誤日志 /var/lib/mysql/hostname.err 記錄詳細異常。

核心原理:IO 線程拉取 Master binlog 寫本地 relay-log,SQL 線程回放 relay-log。同步前雙側數據必須一致,否則 binlog 為增量操作無法回放。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved