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

MySQL Cluster 叢集部署實戰:雙節點高可用架構完整安裝配置指南

     編輯:MySQL 資料庫相關知識

MySQL Cluster 高可用叢集架構概覽

MySQL Cluster(NDB Cluster)是 MySQL 官方提供的分散式、高可用、記憶體內運算的叢集解決方案。本文以雙伺服器(SerA: 192.168.1.50、SerB: 192.168.1.8)為例,詳細記錄從原始碼編譯安裝、管理節點與資料節點配置、叢集啟動驗證的完整流程,實現任意單節點故障時服務不中斷的高可用目標。

部署環境與軟體版本

  • 作業系統:CentOS 5(雙節點)
  • MySQL 版本:MySQL-6.0.0-alpha.tar.gz(文中亦提及實測使用 MySQL-5.0.85-Linux-i686.tar.gz)
  • 節點規劃:
    • 管理節點:ndb_mgmd(SerA、SerB 各一)
    • 資料節點:ndbd(SerA、SerB 各一)
    • SQL 節點:mysqld(SerA、SerB 各一,另預留兩個恢復用槽位)

核心安裝步驟(兩節點同步執行)

# 1. 建立使用者與群組
groupadd mysql
useradd -g mysql mysql

# 2. 解壓與目錄整理
cd /tmp/package
tar -zxvf MySQL-6.0.0-alpha.tar.gz
mv mysql-6.0.0-alpha mysql
cd mysql

# 3. 編譯安裝(關鍵參數:啟用 NDB Cluster、分區、InnoDB)
./configure \
  --prefix=/usr/local \
  --with-extra-charsets=complex \
  --with-plugin-ndbcluster \
  --with-plugin-partition \
  --with-plugin-innobase \
  --with-unix-socket-path=/usr/local/var/mysql.sock

make && make install

# 4. 建立關鍵執行檔軟連結
ln -s /usr/local/libexec/ndbd /usr/bin
ln -s /usr/local/libexec/ndb_mgmd /usr/bin
ln -s /usr/local/libexec/ndb_cpcd /usr/bin
ln -s /usr/local/libexec/mysqld /usr/bin
ln -s /usr/local/libexec/mysqlmanager /usr/bin

# 5. 初始化系統資料庫
mysql_install_db --user=mysql

管理節點配置 config.ini 關鍵解析

配置檔位於 /var/lib/mysql-cluster/config.ini,核心區段說明:

  • [ndbd default]:資料節點預設參數
    • NoOfReplicas=2:雙副本,確保單節點掛掉不丟資料
    • DataMemory=128M、IndexMemory=24M:根據資料量調整,生產環境需依實際容量規劃
    • StopOnError=0:節點錯誤不自動停止,提升可用性
  • [ndb_mgmd]:管理節點定義(Id=1/2 對應 SerA/SerB IP)
  • [ndbd]:資料節點定義(Id=3/4 對應 SerA/SerB IP)
  • [mysqld]:SQL 節點定義
    • ArbitrationRank=2:關鍵參數,啟用仲裁機制,確保單節點故障時叢集仍能判斷分區完整性
    • 預留兩個額外槽位供節點恢復時使用
  • [tcp default]:PortNumber=63132 指定叢集通訊埠

通用配置 my.cnf 重點

[mysqld]
datadir=/usr/local/var
socket=/usr/local/var/mysql.sock
old_passwords=1
default-storage-engine=ndbcluster
ndbcluster
ndb-connectstring=192.168.1.50,192.168.1.8

[ndbd]
connect-string=192.168.1.50,192.168.1.8

[ndb_mgm]
connect-string=192.168.1.50,192.168.1.8

[ndb_mgmd]
config-file=/var/lib/mysql-cluster/config.ini

[mysql.server]
user=mysql
basedir=/usr/local/

[mysqld_safe]
log-error=/var/log/mysqld.log

叢集啟動與驗證

  1. 啟動管理節點(SerA 執行 ndb_mgmd --ndb_nodeid=1,SerB 執行 ndb_mgmd --ndb_nodeid=2)
  2. 啟動資料節點(兩節點各執行 ndbd)
  3. 啟動 SQL 節點(兩節點各執行 mysqld_safe &)
  4. 驗證叢集狀態:管理節點執行 ndb_mgm -e "SHOW" 確認所有節點狀態為 STARTED

注意:啟動管理節點時會出現「arbitrator 與 db node 同主機」警告,生產環境建議將管理節點與資料節點分離部署以消除單點風險。

遷移至新版本建議

MySQL Cluster 現已發展至 8.0 系列,支援更多功能(如線上 schema 變更、更佳效能)。新專案建議直接採用 MySQL 8.0+ 的 NDB Cluster,並參考官方文件調整配置參數(如 DataMemory 支援動態調整、新增 ndb_dist_privileges 等)。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved