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

MySQL Cluster 複製原理深度解析:Row-based 複製、環形拓撲與 CHANGE MASTER 實戰

     編輯:MySQL 資料庫相關知識

背景:Cluster + Replication 混合架構

MySQL 5.1+ 支援 NDB Cluster 節點作為 Replication Master/Slave,結合集群高可用 + 異地備份。但效能較單純 Cluster 或 Replication 略低,需權衡。

支援拓撲

  • 雙集群主從:Cluster A (SQL 節點) → Cluster B (SQL 節點)
  • 三集群環形:A→B→C→A(單 SQL 節點參與)
  • 三集群雙環:每集群雙 SQL 節點各自成環,共 6 點

核心限制:必須使用 Row-based 複製

  • NDB Cluster 內部同步為同步複製,Binlog 僅記錄行變更
  • 配置 binlog_format = ROW 或 MIXED(Statement 會報錯)

Master 配置 (my.cnf)

[mysqld]
server-id = 1
binlog_format = ROW
log-bin = mysql-bin
ndbcluster  # 啟用 NDB 引擎

Slave 配置 (my.cnf)

[mysqld]
server-id = 2
relay-log = slave-relay-bin
relay-log-purge = 1
skip-slave-start
replicate-ignore-db = mysql  -- 忽略系統庫
ndbcluster

建立複製帳號並啟動

-- Master 上
GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'repl'@'slave_sql_node_ip' IDENTIFIED BY 'strong_pass';

-- Slave 上
CHANGE MASTER TO
  MASTER_HOST='master_sql_node_ip',
  MASTER_USER='repl',
  MASTER_PASSWORD='strong_pass',
  MASTER_PORT=3306;
START SLAVE;

驗證狀態

SHOW SLAVE STATUS\G
-- 關鍵欄位:
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Seconds_Behind_Master: 0

PROCESSLIST 觀察

-- 啟動前:僅 2 個進程 (ndbcluster event daemon + client)
-- 啟動後:新增 2 個進程
--   system user  -  Slave I/O thread (接收 binlog)
--   system user  -  Slave SQL thread (重放 event)

避坑指南

  • server-id 全局唯一:跨集群所有 SQL 節點不可重複
  • 忽略 mysql 資料庫:replicate-ignore-db=mysql 防權限表衝突
  • NDB 表才能複製:非 NDB 引擎表不會進 Binlog
  • 主鍵必須存在:Row-based 依賴 PK 定位行
  • 衝突檢測:雙主/環形需配置 ndb-slave-conflict-role、ndb-log-conflict

監控指標

指標正常值異常處理
Seconds_Behind_Master0~低個位數>30s 檢查網路/ SQL thread 阻塞
Slave_IO_RunningYesNo → 檢查網路、認證、Master Binlog
Slave_SQL_RunningYesNo → SHOW ENGINE NDB STATUS、衝突處理
Relay_Log_Space穩定持續增長 → SQL thread 慢於 I/O thread

結語

Cluster Replication 以 Row-based Binlog + NDB 原生同步 實現跨集群資料同步。配置關鍵在 binlog_format=ROW、server-id 唯一、replicate-ignore-db=mysql。生產部署前必須在測試環境跑通故障切換、衝突解決、延遲爆增三大壓測場景。

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