| 角色 | 數量 | IP | 備註 |
|---|---|---|---|
| 管理節點 (MGM) | 1 | 192.168.76.131 | 仲裁、配置分發 |
| SQL 節點 (API) | 2 | 192.168.76.132, .133 | 應用連線入口 |
| 資料節點 (NDB) | 2 | 192.168.76.132, .133 | 實際儲存資料,與 SQL 節點同機 |
注意:生產環境建議管理節點、SQL 節點、資料節點**物理隔離**部署,避免單點故障。
./configure \
--prefix=/usr/local/mysql \
--with-plugins=ndbcluster \ # 關鍵:啟用 NDB Cluster 支援
--with-charset=utf8 \
--with-collation=utf8_general_ci \
--with-extra-charsets=utf8,gbk \
--with-mysqld-user=mysql \
...
編譯安裝後初始化:scripts/mysql_install_db --user=mysql
[NDBD DEFAULT]
NoOfReplicas=1 # 副本數 (建議生產環境 ≥2)
DataMemory=200M # 每資料節點資料記憶體
IndexMemory=100M # 每資料節點索引記憶體
[TCP DEFAULT]
portnumber=2202 # 節點間通訊埠
[NDB_MGMD]
id=1
hostname=192.168.76.131
datadir=/db/mysql-cluster
[NDBD]
id=2
hostname=192.168.76.132
datadir=/db/mysql
[NDBD]
id=3
hostname=192.168.76.133
datadir=/db/mysql
[MYSQLD]
hostname=192.168.76.132
[MYSQLD]
hostname=192.168.76.133
[MYSQLD] # 允許任意 IP 連線的 SQL 節點
[mysqld]
ndbcluster
ndb-connectstring=192.168.76.131
[mysql_cluster]
ndb-connectstring=192.168.76.131
ndb_mgmd --config-file=/db/mysql-cluster/config.ini--initial):
ndbd --ndb-nodeid=2 --initialndbd --ndb-nodeid=3 --initialmysqld_safe --ndb-nodeid=4 --user=mysql & (依序啟動)ndb_mgm -e show
正常應顯示所有節點 Connected,資料節點狀態 STARTED。
# Node 1 建表寫入
CREATE DATABASE test;
USE test;
CREATE TABLE t1 (id INT PRIMARY KEY) ENGINE=NDBCLUSTER;
INSERT INTO t1 VALUES (1);
# Node 2 查詢驗證
SELECT * FROM test.t1;
ndbd --ndb-nodeid=ID (無需 --initial)NoOfReplicas=2 確保高可用 (需 4+ 資料節點)DataMemory/IndexMemory 依資料量規劃,預留 20% 餘量HeartbeatIntervalDbDb、ArbitrationTimeout 調整故障偵測敏感度ndb_mgm -e "ALL REPORT MEMORYUSAGE"