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

Windows Server 2003 搭建 MySQL Cluster 叢集詳細教學

     編輯:MySQL 資料庫相關知識

MySQL Cluster (NDB Cluster) 是 MySQL 針對分散式高可用、高擴展場景推出的儲存引擎架構。本文以 Windows Server 2003 SP2 為實驗環境,基於 MySQL Cluster 7.1.3 (對應 MySQL 5.1 系列) 詳細記錄叢集部署全流程,包含架構原理、節點規劃、配置檔編寫、服務啟動順序與管理測試。

核心架構與節點角色

MySQL Cluster 採用 Shared-Nothing (無共享) 架構,各節點擁有獨立記憶體與磁碟,無單點故障。叢集由三類邏輯節點組成:

  • 管理節點 (MGM):叢集大腦,負責配置分發、狀態監控、日誌記錄、仲裁決策。對應進程 ndb_mgmd.exe。
  • 資料節點 (NDBD):實際儲存資料,支援記憶體與磁碟兩種模式,提供高可用冗餘 (NoOfReplicas)。對應進程 ndbd.exe。
  • SQL 節點 (API):對外提供標準 MySQL 介面 (mysqld),應用端連接此節點執行 SQL。可與資料節點共機部署。

通訊要求:節點間通訊未加密,需高速低延遲區域網路 (建議千兆以上),嚴禁跨公網或跨網段部署。

MySQL Cluster 架構示意圖

實驗環境規劃 (雙機部署)

機器IP角色
Node110.0.0.201MGM + SQL1 + NDBD1
Node210.0.0.202SQL2 + NDBD2

最佳實踐提示:生產環境中 MGM 節點應獨立部署,避免與資料節點共機導致單點故障引發全叢集癱瘓。本實驗為演示簡化合併部署。

軟體獲取與安裝準備

  1. 下載 MySQL Cluster 7.1.3 Windows 32-bit 免安裝版:mysql-cluster-gpl-noinstall-7.1.3-win32.zip (官網 下載頁)。
  2. 兩台機器均解壓至 D:\mysql-cluster-gpl-noinstall-7.1.3-win32。
  3. 將 D:\mysql-cluster-gpl-noinstall-7.1.3-win32\bin 加入系統環境變數 PATH (需重開 CMD 生效)。

步驟一:配置管理節點

在 Node1 建立目錄 D:\mysql-cluster 及配置檔 config.ini:

[NDBD DEFAULT]
NoOfReplicas=1          # 單副本 (測試用,生產建議 2)

[MYSQLD DEFAULT]
[NDB_MGMD DEFAULT]
[TCP DEFAULT]

# Management Server
[NDB_MGMD]
hostname=10.0.0.201     # MGM IP

# Storage Engines (Data Nodes)
[NDBD]
hostname=10.0.0.201
datadir=D:\data

[NDBD]
hostname=10.0.0.202
datadir=D:\data

# SQL Engines (API Nodes)
[MYSQLD]
hostname=10.0.0.201

[MYSQLD]
hostname=10.0.0.202

關鍵參數說明:NoOfReplicas=1 表示資料不做同步複寫 (測試用);datadir 指定資料檔存放路徑,需提前建立 D:\data 目錄。

步驟二:配置 SQL 節點與資料節點 (兩台機器同步操作)

  1. 註冊 MySQL 為 Windows 服務 (手動啟動):
    mysqld.exe -install mysql
    在「服務」中將 mysql 設為「手動」。
  2. 複製配置範本:將解壓目錄下的 my-small.ini 複製為 my.ini。
  3. 建立臨時目錄 D:\tmp。
  4. 編輯 my.ini,在 [mysqld] 區段末尾添加:
    # SQL Cluster Node
    ndbcluster
    ndb-connectstring=10.0.0.201  # 指向 MGM IP
  5. 在 my.ini 末尾新增 [mysql_cluster] 區段供資料節點使用:
    [mysql_cluster]
    ndb-connectstring=10.0.0.201
    (亦可用 [ndbd] 區段,效果相同)。

步驟三:啟動叢集服務 (嚴格順序)

順序:MGM → NDBD → SQL (mysqld)

1. 啟動管理節點

在 Node1 CMD 執行:

ndb_mgmd.exe -f D:\mysql-cluster\config.ini --configdir=D:\mysql-cluster

出現 ==CONFIRMED== 及 Id: 1, Command port: *:1186 表示成功。

2. 啟動資料節點

兩台機器分別執行:

  • 首次/初始化:ndbd.exe --initial (會清空資料目錄重建)
  • 後續啟動:ndbd.exe (切勿加 --initial,否則資料全失)

資料節點會自動連接 MGM 進行同步。

3. 啟動 SQL 節點

在兩台機器「服務」中啟動 mysql 服務,或執行 net start mysql。

叢集管理與狀態監控

使用 ndb_mgm.exe 客戶端連接 MGM:

ndb_mgm.exe
ndb_mgm> SHOW

啟動前:資料節點與 SQL 節點顯示 (not connected, accepting connect from ...)。
啟動後:所有節點顯示 @IP (mysql-5.1.44 ndb-7.1.3),資料節點標示 Nodegroup 與 Master。

關閉叢集

ndb_mgm -e shutdown

或在 ndb_mgm 中輸入 SHUTDOWN。警告:此命令關閉 MGM 及所有 NDBD,SQL 節點需單獨關閉 (net stop mysql 或 mysqladmin -u root shutdown)。強制斷電會導致資料遺失。

功能測試與故障模擬

  1. 基本讀寫:在任一 SQL 節點建立 ENGINE=NDBCLUSTER 資料表並插入資料,另一 SQL 節點即可查詢。
  2. 單點故障測試:
    • 手動停止一台 NDBD (Ctrl+C),驗證 SQL 節點仍可正常讀寫。
    • 故障期間寫入資料,重啟 NDBD,驗證資料自動同步恢復完整。

注意:NDB 表必須有主鍵,否則引擎自動生成隱含主鍵佔用記憶體,易導致 OOM。

常見坑點與擴展建議

  • 乾淨環境:若機器曾裝過普通 MySQL Server,必須徹底卸載 (含資料目錄、註冊表、服務),避免二進制衝突。
  • 版本選擇:優先選擇經生產驗證的穩定版 (如 7.1.x, 7.2.x, 7.5.x, 7.6.x LTS),避開最新版潛在 Bug。
  • 負載均衡:前端接入 LVS/HAProxy/Nginx 實現 SQL 節點負載分發與高可用。
  • 監控告警:監控 MGM 日誌、NDBD 記憶體使用率 (DataMemory/IndexMemory)、網路延遲、同步延遲 (SecondsBehindMaster 等價指標)。

MySQL Cluster 部署複雜度高,但提供了真正的分散式高可用寫入能力。Windows 平台部署適合開發測試與小規模業務,生產核心業務強烈建議遷移至 Linux 平台 (更穩定、效能更優、工具鏈更豐富)。

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