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

MySQL Cluster 集群部署實戰:管理節點、數據節點、SQL 節點架構與配置全流程

     編輯:MySQL 資料庫相關知識

MySQL Cluster(NDB Cluster)以「無共享架構」提供 99.999% 高可用、亞秒級故障轉移、線性擴展能力。本文記錄雙機雙節點生產級部署全流程:架構解析、配置文件詳解、啟動驗證、測試用例、關閉流程,適合評估或落地 MySQL Cluster 的架構師與 DBA。

一、核心架構概念

節點類型進程職責啟動命令
管理節點 (MGM)ndb_mgmd集群配置、日誌、啟停節點、備份協調ndb_mgmd -f config.ini
數據節點 (NDB)ndbd / ndbmtd存儲分片數據、複製、恢復、事務協調ndbd --initial
SQL 節點 (API)mysqld接收客戶端請求、解析 SQL、路由至數據節點mysqld --ndbcluster

MySQL Cluster 架構圖

二、部署拓撲規劃(雙機高可用)

角色IP部署節點
管理節點 110.1.6.205MGM
數據節點 110.1.6.203NDB (NodeId=2)
數據節點 210.1.6.205NDB (NodeId=3)
SQL 節點 110.1.6.203mysqld (NodeId=4)
SQL 節點 210.1.6.205mysqld (NodeId=5)

網絡要求:專用子網、節點間免密 SSH、關閉防火牆/SELinux、時間同步 (NTP)

三、二進制包安裝(所有節點統一)

# 解壓
tar -C /usr/local -xzvf mysql-cluster-gpl-7.2.6-linux2.6-x86_64.tar.gz
ln -s /usr/local/mysql-cluster-gpl-7.2.6-linux2.6-x86_64 /usr/local/mysql

# 建立用戶目錄
groupadd mysql && useradd -g mysql -r -s /sbin/nologin mysql
mkdir -p /data/mysql/data /data/mysql/log
chown -R mysql:mysql /data/mysql

# 初始化(僅 SQL 節點需執行)
/usr/local/mysql/scripts/mysql_install_db --user=mysql --datadir=/data/mysql/data

四、配置文件詳解

1. SQL 節點 /etc/my.cnf

[mysqld]
basedir=/usr/local/mysql
datadir=/data/mysql/data
user=mysql
port=3306
socket=/tmp/mysql.sock
ndbcluster                    # 啟用 NDB 引擎
ndb-connectstring=10.1.6.205  # 管理節點 IP
connect_timeout=300

[mysql_cluster]
ndb-connectstring=10.1.6.205

2. 管理節點 /opt/cluster/config.ini

[ndbd default]
NoOfReplicas=2                # 副本數 = 數據節點數 / 片段數
DataMemory=80M                # 數據內存 (按實際調整)
IndexMemory=18M               # 索引內存

[tcp default]
portnumber=2202               # NDB 通訊端口

[ndb_mgmd]
NodeId=1
hostname=10.1.6.205
datadir=/opt/cluster

[ndbd]
NodeId=2
hostname=10.1.6.203
datadir=/usr/local/mysql/data

[ndbd]
NodeId=3
hostname=10.1.6.205
datadir=/usr/local/mysql/data

[mysqld]
NodeId=4
hostname=10.1.6.203

[mysqld]
NodeId=5
hostname=10.1.6.205

[mysqld]                      # 允許任意 API 節點接入
hostname=%

五、啟動序列(嚴格順序)

  1. 管理節點:ndb_mgmd -f /opt/cluster/config.ini
  2. 數據節點(首次需 --initial):
    ndbd --initial(兩台並行啟動)
  3. SQL 節點:mysqld_safe --defaults-file=/etc/my.cnf &

六、驗證集群狀態

ndb_mgm -e show
# 輸出示例
Cluster Configuration
---------------------
[ndbd(NDB)] 2 node(s)
id=2 @10.1.6.203 (Nodegroup: 0, Master)
id=3 @10.1.6.205 (Nodegroup: 0)
[ndb_mgmd(MGM)] 1 node(s)
id=1 @10.1.6.205
[mysqld(API)] 4 node(s)
id=4 @10.1.6.203
id=5 @10.1.6.205
id=6,7 (not connected, accepting any host)

七、功能測試

-- SQL 節點 1 建表(必須指定 ENGINE=NDB)
CREATE TABLE dave (num INT) ENGINE=NDB;
INSERT INTO dave VALUES (100);

-- SQL 節點 2 查詢
SELECT * FROM dave;  -- 返回 100 ✅

八、內存監控與調優

SELECT * FROM ndbinfo.memoryusage;
-- 關注 used / total 比例,超 80% 需擴容 DataMemory/IndexMemory 並滾動重啟

九、優雅關閉流程

# 1. 關閉集群(自動協調數據節點檢查點)
ndb_mgm -e shutdown

# 2. 關閉 SQL 節點
mysqladmin -uroot -p shutdown

十、生產環境關鍵建議

  1. 內存規劃:DataMemory = (數據量 × 1.5) / NoOfReplicas,預留 30% 緩衝
  2. 磁盤持久化:啟用 Redo Log、Checkpoint、Backup 策略
  3. 網絡隔離:專用 VLAN、MTU 9000、TCP 優化參數
  4. 監控體系:ndbinfo 表 + Prometheus Exporter + Grafana 儀表板
  5. 備份恢復演練:每季度 ndb_mgm -e "START BACKUP" + 異地恢復驗證
  6. 版本升級:滾動升級,先 MGM → 數據節點 → SQL 節點
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved