架構說明
- 兩數據節點:Server1 (192.168.0.1)、Server2 (192.168.0.2) —— 運行
ndbd 數據節點進程與 mysqld SQL 節點。
- 一管理節點:Server3 (192.168.0.3) —— 僅運行
ndb_mgmd 管理進程與 ndb_mgm 客戶端,配置低、可共用、啟動後理論可關閉但強烈建議常駐(否則單點故障導致集群不可用)。
- 版本要求:MySQL Max 版(如
mysql-max-4.1.9),Standard 版不支持 NDB。
部署步驟
1. 數據節點安裝 MySQL Max(Server1/Server2 同步執行)
groupadd mysql; useradd -g mysql mysql
tar -zxvf mysql-max-4.1.9-pc-linux-gnu-i686.tar.gz -C /usr/local/
mv mysql-max-4.1.9-pc-linux-gnu-i686 /usr/local/mysql
cd /usr/local/mysql
scripts/mysql_install_db --user=mysql
chown -R root .; chown -R mysql data; chgrp -R mysql .
cp support-files/mysql.server /etc/rc.d/init.d/mysqld
chmod +x /etc/rc.d/init.d/mysqld
chkconfig --add mysqld
# 暫不啟動 mysqld
2. 管理節點部署(Server3)
mkdir /usr/src/mysql-mgmt
tar -zxvf mysql-max-4.1.9-pc-linux-gnu-i686.tar.gz -C /usr/src/mysql-mgmt
cd /usr/src/mysql-mgmt/mysql-max-4.1.9-pc-linux-gnu-i686
mv bin/ndb_mgm bin/ndb_mgmd /usr/bin/
chmod +x /usr/bin/ndb_mg*
mkdir -p /var/lib/mysql-cluster
cat > /var/lib/mysql-cluster/config.ini <<'EOF'
[NDBD DEFAULT]
NoOfReplicas=2
[MYSQLD DEFAULT]
[NDB_MGMD DEFAULT]
[TCP DEFAULT]
[NDB_MGMD]
HostName=192.168.0.3
[NDBD]
HostName=192.168.0.1
DataDir=/var/lib/mysql-cluster
[NDBD]
HostName=192.168.0.2
DataDir=/var/lib/mysql-cluster
[MYSQLD]
[MYSQLD]
EOF
ndb_mgmd # 啟動管理進程
3. 數據節點配置並啟動(Server1/Server2)
cat > /etc/my.cnf <<'EOF'
[mysqld]
ndbcluster
ndb-connectstring=192.168.0.3
[mysql_cluster]
ndb-connectstring=192.168.0.3
EOF
mkdir -p /var/lib/mysql-cluster
/usr/local/mysql/bin/ndbd --initial # 僅首次或 config.ini 變更需 --initial
/etc/rc.d/init.d/mysqld start
4. 驗證集群狀態(Server3)
ndb_mgm
ndb_mgm> SHOW
# 應看到 2 個 ndbd 節點、1 個 mgmd、2 個 mysqld(API) 節點均連接正常
5. 功能測試
# Server1
mysql -u root -p
USE test;
CREATE TABLE ctest (i INT) ENGINE=NDBCLUSTER;
INSERT INTO ctest VALUES (1);
SELECT * FROM ctest; -- 返回 1
# Server2 重複驗證,雙向同步測試
6. 破壞性測試(高可用驗證)
- 拔網線或
kill -9 ndbd 進程模擬節點故障。
- 另一節點繼續服務讀寫。
- 管理端
SHOW 顯示故障節點狀態。
- 故障節點恢復:
ndbd(無需 --initial)重新加入集群。
關鍵注意事項
- 三節點是底線:兩數據節點 + 一管理節點,缺一不可。
- NoOfReplicas=2:副本數等於數據節點數,單節點故障不丟數據。
- 管理節點常駐:關閉後集群無法仲裁,新節點無法加入。
- 防火牆/SELinux:開放 1186 (管理)、3306 (SQL)、NDB 內部通信端口。
- 版本升級:滾動升級需遵循官方文檔,避免協議不兼容。