| 角色 | Server1 | Server2 |
|---|---|---|
| IP | 192.168.1.111 | 192.168.1.110 |
| 管理節點 (MGM) | NodeId=1 | NodeId=2 |
| 資料節點 (NDB) | NodeId=3 | NodeId=4 |
| SQL 節點 (API) | NodeId=5 | NodeId=6 |
./configure --prefix=/usr --with-plugin-ndbcluster --with-plugin-partition --with-plugin-innobase
make && make install
# 建立軟連結方便執行
ln -s /usr/libexec/ndbd /usr/bin/
ln -s /usr/libexec/ndb_mgmd /usr/bin/
ln -s /usr/libexec/mysqld /usr/bin/
[ndbd default]
NoOfReplicas=2
DataMemory=80M
IndexMemory=24M
DataDir=/var/lib/mysql-cluster
[ndb_mgmd]
Id=1
HostName=192.168.1.111
[ndb_mgmd]
Id=2
HostName=192.168.1.110
[ndbd]
Id=3
HostName=192.168.1.111
[ndbd]
Id=4
HostName=192.168.1.110
[mysqld]
ArbitrationRank=2
HostName=192.168.1.111
[mysqld]
ArbitrationRank=2
HostName=192.168.1.110
[tcp default]
PortNumber=63132
關鍵:ArbitrationRank=2 讓 SQL 節點參與仲裁,單節點故障時剩餘節點仍能形成法定人數繼續服務。
[mysqld]
default-storage-engine=ndbcluster
ndbcluster
ndb-connectstring=192.168.1.111,192.168.1.110
[ndbd]
connect-string=192.168.1.111,192.168.1.110
[ndb_mgm]
connect-string=192.168.1.111,192.168.1.110
[ndb_mgmd]
config-file=/var/lib/mysql-cluster/config.ini
[mysql_cluster]
ndb-connectstring=192.168.1.111,192.168.1.110
ndb_mgmd --ndb_nodeid=1ndb_mgmd --ndb_nodeid=2--initial):
ndbd --ndb_nodeid=3 --initialndbd --ndb_nodeid=4 --initialndb_mgm -e showmysqld_safe --ndb_nodeid=5 --user=mysql &mysqld_safe --ndb_nodeid=6 --user=mysql &# Server1 建表寫入
mysql -u root -e "CREATE DATABASE aa; USE aa; CREATE TABLE ctest (i INT) ENGINE=NDBCLUSTER; INSERT INTO ctest VALUES (1);"
# Server2 讀取驗證
mysql -u root -e "USE aa; SELECT * FROM ctest;"
# 應回傳 1 row
ifconfig eth0 down,觀察另一節點持續服務kill -9 $(pidof ndbd),觀察叢集狀態與查詢可用性ndbd --ndb_nodeid=ID (無 --initial),自動同步趕上mysqldump --single-transaction 或 NDB 原生備份工具