萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 程式設計 >  >> 資料庫 >> MySQL 教學

MySQL NDB Cluster 搭建全紀錄:三節點高可用架構實戰

架構總覽

  • 2 個資料節點:儲存資料、處理查詢
  • 1 個管理節點:協調叢集、仲裁(可啟動後關閉,但不建議)
  • 2 個 SQL 節點:即 mysqld,接收客戶端請求

⚠️ 必須使用 MySQL Max/Cluster 版本,標準版不支援 NDB。

環境假設

Server1 (Data+SQL): 192.168.0.1  mysql1.vmtest.net
Server2 (Data+SQL): 192.168.0.2  mysql2.vmtest.net
Server3 (Mgmt)    : 192.168.0.3  mysql3.vmtest.net

步驟 1:資料節點安裝 MySQL Cluster

# 兩台資料節點同樣執行
cd /usr/local
tar -zxvf mysql-max-4.1.9-pc-linux-gnu-i686.tar.gz
mv mysql-max-4.1.9-pc-linux-gnu-i686 mysql
cd mysql
groupadd mysql; useradd -g mysql 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
# 暫不啟動!

步驟 2:管理節點部署

mkdir /usr/src/mysql-mgm; cd /usr/src/mysql-mgm
tar -zxvf mysql-max-4.1.9-pc-linux-gnu-i686.tar.gz
cd mysql-max-4.1.9-pc-linux-gnu-i686
mv bin/ndb_mgm bin/ndb_mgmd .
chmod +x ndb_mg*
mv ndb_mg* /usr/bin/
cd; rm -rf /usr/src/mysql-mgm

建立 config.ini

mkdir /var/lib/mysql-cluster; cd /var/lib/mysql-cluster
vi config.ini
[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]

啟動管理節點

ndb_mgmd  # 無輸出為正常

步驟 3:資料節點配置並啟動

修改 /etc/my.cnf

[mysqld]
ndbcluster
ndb-connectstring=192.168.0.3

[mysql_cluster]
ndb-connectstring=192.168.0.3

首次啟動資料節點進程

# 第一次或 config.ini 變更後需加 --initial
ndbd --initial

# 後續重啟
ndbd

# 可加入 /etc/rc.local 開機自啟

步驟 4:驗證叢集狀態

# 管理節點執行
ndb_mgm
ndb_mgm> SHOW

預期輸出:

Connected to Management Server at: localhost:1186
Cluster Configuration
[ndbd(NDB)] 2 node(s)
id=2 @192.168.0.1 (Version: 4.1.9, Nodegroup: 0, Master)
id=3 @192.168.0.2 (Version: 4.1.9, Nodegroup: 0)
[ndb_mgmd(MGM)] 1 node(s)
id=1 @192.168.0.3 (Version: 4.1.9)
[mysqld(API)] 2 node(s)
id=4 (Version: 4.1.9)
id=5 (Version: 4.1.9)

步驟 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 同步驗證
mysql -u root -p
USE test;
SELECT * FROM ctest;  -- 應看到 1
INSERT INTO ctest VALUES (2);
# 回 Server1 查詢應看到 1,2

步驟 6:破壞性測試

  • 拔網線或 kill -9 ndbd_pid 模擬節點故障
  • 另一節點應持續服務
  • 管理端 SHOW 觀察節點狀態變化
  • 故障節點恢復:ndbd(無需 --initial)

遷移到新版提醒

本文基於 MySQL Cluster 4.1/5.1 時代架構。現代版本(MySQL Cluster 7.5/7.6/8.0)請參考官方文檔,主要變化:

  • 配置檔語法更新、支援動態重配置
  • 管理節點可多節點高可用
  • 支援線上 Schema 變更、備份/還原增強
  • 建議使用 ndb_setup.py 圖形化部署工具
copyright © 萬盛學電腦網 all rights reserved