MySQL Cluster (NDB) 是高可用、記憶體內、分布式存儲引擎。本文詳細記錄在 Windows 單機環境下部署「1 管理節點 + 2 數據節點 + 1 SQL 節點」完整集群的步驟,含目錄規劃、配置檔編寫、節點啟動順序、驗證測試與關閉流程。
| 角色 | 進程名 | 職責 | 本部署實例數 |
|---|---|---|---|
| 管理節點 | ndb_mgmd | 集群配置分發、狀態監控、仲裁 | 1 |
| 數據節點 | ndbd / ndbmtd | 存儲數據、處理事務、同步副本 | 2 (NoOfReplicas=2) |
| SQL 節點 | mysqld | 處理客戶端 SQL 請求、路由到數據節點 | 1 |
C:\ypl\mysql\mysqlc -- MySQL Cluster 安裝目錄 (解壓包)
C:\ypl\mysql\my_Cluster\ -- 集群工作根目錄
├── ndb_data\ -- 數據節點文件目錄
├── mysqld_data\ -- SQL 節點數據目錄
│ └── ndbinfo\ -- ndbinfo 系統庫
└── conf\ -- 配置文件目錄
├── my.cnf -- mysqld 配置
└── config.ini -- 集群全局配置
[mysqld]
ndbcluster
datadir=C:\\ypl\\mysql\\my_Cluster\\mysqld_data
basedir=C:\\ypl\\mysql\\mysqlc
port=3306
[ndb_mgmd]
hostname=localhost
datadir=C:\ypl\mysql\my_Cluster\ndb_data
id=1
[ndbd default]
noofreplicas=2
datadir=C:\ypl\mysql\my_Cluster\ndb_data
[ndbd]
hostname=localhost
id=3
[ndbd]
hostname=localhost
id=4
[mysqld]
hostname=localhost
關鍵參數:NoOfReplicas=2 要求至少 2 個數據節點,形成主備副本。
# 複製 mysql 系統庫到 ndb_data
xcopy C:\ypl\mysql\mysqlc\data\mysql C:\ypl\mysql\my_Cluster\ndb_data\mysql /E /I
# 複製 ndbinfo 到 mysqld_data
xcopy C:\ypl\mysql\mysqlc\data\ndbinfo C:\ypl\mysql\my_Cluster\mysqld_data\ndbinfo /E /I
1. 管理節點
start /B C:\ypl\mysql\mysqlc\bin\ndb_mgmd -f conf\config.ini --initial --configdir=C:\ypl\mysql\my_Cluster\conf
2. 數據節點 (依次啟動,等待同步完成)
start /B C:\ypl\mysql\mysqlc\bin\ndbd -c localhost:1186
start /B C:\ypl\mysql\mysqlc\bin\ndbd -c localhost:1186
3. SQL 節點
start /B C:\ypl\mysql\mysqlc\bin\mysqld --defaults-file=conf\my.cnf

# 查看集群狀態
C:\ypl\mysql\mysqlc\bin\ndb_mgm -e show
預期輸出:
Connected to Management Server at: localhost:1186
Cluster Configuration
---------------------
[ndbd(NDB)] 2 node(s)
id=3 @127.0.0.1 (Version 5.6.23, Nodegroup: 0, Master)
id=4 @127.0.0.1 (Version 5.6.23, Nodegroup: 0)
[ndb_mgmd(MGM)] 1 node(s)
id=1 @127.0.0.1 (Version 5.6.23)
[mysqld(API)] 1 node(s)
id=2 @127.0.0.1 (Version 5.6.23)

mysql -u root -p123456
DROP DATABASE IF EXISTS yplbeyond;
CREATE DATABASE yplbeyond;
USE yplbeyond;
CREATE TABLE users (
id INT(3) AUTO_INCREMENT NOT NULL PRIMARY KEY,
uid CHAR(50) NOT NULL,
pwd CHAR(50) NOT NULL,
realname CHAR(10) NOT NULL,
phone CHAR(10) NOT NULL,
mail CHAR(30) NOT NULL,
date DATETIME NULL
) ENGINE=NDB; -- 關鍵:指定 NDB 引擎
INSERT INTO users VALUES ('', '人民大學', 'rucedu', 'lizi', '00000000', '11@11', '');
SELECT * FROM users;

# 1. 關閉 SQL 節點
C:\ypl\mysql\mysqlc\bin\mysqladmin -u root -p123456 shutdown
# 2. 關閉整個集群 (管理節點發送關閉信號)
C:\ypl\mysql\mysqlc\bin\ndb_mgm -e shutdown

MySQL Cluster 單機部署核心路徑:目錄隔離 → 雙配置文件 (my.cnf + config.ini) → 系統庫預置 → 嚴格啟動順序 (MGM → NDB → SQL) → ENGINE=NDB 驗證。掌握此流程,可快速搭建測試環境驗證 NDB 特性,為生產環境多機器部署打下基礎。