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

MySQL 5.5 三級鏈式主從配置實戰(A→B→C)

     編輯:MySQL 綜合教學

架構拓撲

  • A(Master):Port 3307,Server ID=1,寫入節點
  • B(Slave of A / Master of C):Port 3308,Server ID=2,中繼節點,read-only
  • C(Slave of B):Port 3309,Server ID=3,只讀節點,read-only

自增配置避免主鍵衝突:auto_increment_increment=3,Offset 分別為 1、2、3。

配置文件核心參數

A (my.cnf)

[mysqld]
server-id=1
log-bin=mysql-bin
log-slave-updates=1          # 關鍵:將從庫收到的 binlog 寫入自己的 binlog,供 C 同步
binlog-format=ROW
auto-increment-increment=3
auto-increment-offset=1

B (my.cnf)

[mysqld]
server-id=2
log-bin=mysql-bin
log-slave-updates=1
binlog-format=ROW
auto-increment-increment=3
auto-increment-offset=2
read-only=1

C (my.cnf)

[mysqld]
server-id=3
log-bin=mysql-bin
log-slave-updates=1
binlog-format=ROW
auto-increment-increment=3
auto-increment-offset=3
read-only=1

逐步構建同步鏈路

步驟 1:在 A 創建同步賬號並備份

-- A 上執行
RESET MASTER;
CREATE USER 'repli_user'@'%' IDENTIFIED BY 'repli_pwd';
GRANT REPLICATION SLAVE ON *.* TO 'repli_user'@'%';
FLUSH PRIVILEGES;

-- 導出全量數據(含 binlog 位點)
mysqldump -uroot -p -P3307 -A -E -R --master-data=1 --single-transaction > master_A.sql

步驟 2:初始化 B

-- B 上執行
RESET SLAVE;
RESET MASTER;
CREATE USER 'repli_user'@'%' IDENTIFIED BY 'repli_pwd';
GRANT REPLICATION SLAVE ON *.* TO 'repli_user'@'%';

CHANGE MASTER TO
  MASTER_HOST='localhost',
  MASTER_USER='repli_user',
  MASTER_PASSWORD='repli_pwd',
  MASTER_PORT=3307;

-- 導入 A 的全量數據
mysql -uroot -p -P3308 < master_A.sql

START SLAVE;
SHOW SLAVE STATUS\G  -- 確認 Slave_IO_Running=Yes, Slave_SQL_Running=Yes

-- B 備份供 C 使用
mysqldump -uroot -p -P3308 -A -E -R --master-data=1 --single-transaction > master_B.sql

步驟 3:初始化 C

-- C 上執行
RESET SLAVE;

CHANGE MASTER TO
  MASTER_HOST='localhost',
  MASTER_USER='repli_user',
  MASTER_PASSWORD='repli_pwd',
  MASTER_PORT=3308;

mysql -uroot -p -P3309 < master_B.sql

START SLAVE;
SHOW SLAVE STATUS\G

關鍵點與避坑指南

  • log-slave-updates 必開:B 必須將從 A 接收的事務寫入自己的 binlog,C 才能同步。
  • ROW 格式最安全:避免非確定性函數導致主從數據不一致。
  • read-only 保護中繼節點:防止誤在 B/C 寫入導致同步中斷。
  • 防火牆/安全組:確保 3307/3308/3309 端口互通。
  • 監控延遲:Seconds_Behind_Master 持續增長需排查慢 SQL、網絡、磁盤 IO。

結語

三級鏈式主從適用於「一寫多讀、跨機房容災」場景。核心在於 log-slave-updates 打通 binlog 傳遞鏈路,配合自增偏移量消除主鍵衝突。生產環境建議引入 MHA/Orchestrator 實現自動故障轉移。

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