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

MySQL Cluster 雙機高可用叢集部署與故障測試 (Gentoo + MySQL 5.2)

     編輯:MySQL 資料庫相關知識

環境規劃

角色Server1Server2
IP192.168.1.111192.168.1.110
管理節點 (MGM)NodeId=1NodeId=2
資料節點 (NDB)NodeId=3NodeId=4
SQL 節點 (API)NodeId=5NodeId=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/

管理節點配置 (/var/lib/mysql-cluster/config.ini)

[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 節點參與仲裁,單節點故障時剩餘節點仍能形成法定人數繼續服務。

通用 my.cnf (兩節點相同)

[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

啟動流程

  1. 管理節點:
    • Server1: ndb_mgmd --ndb_nodeid=1
    • Server2: ndb_mgmd --ndb_nodeid=2
  2. 資料節點 (首次必加 --initial):
    • Server1: ndbd --ndb_nodeid=3 --initial
    • Server2: ndbd --ndb_nodeid=4 --initial
  3. 檢查狀態:ndb_mgm -e show
  4. SQL 節點:
    • Server1: mysqld_safe --ndb_nodeid=5 --user=mysql &
    • Server2: 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),自動同步趕上

重要提醒

  • 雙機部署中管理節點與資料節點同機,**非生產環境最佳實務**
  • 生產環境建議:3 管理節點 (不同機房) + 4+ 資料節點 (NoOfReplicas=2) + 多 SQL 節點
  • 搭配 Keepalived + LVS 實現 SQL 節點 VIP 漂移與負載均衡
  • 定期備份:mysqldump --single-transaction 或 NDB 原生備份工具
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved