MySQL Cluster 是基於 NDB 存儲引擎的高可用、高冗余分布式資料庫解決方案。本文詳細記錄在 Windows Server 2003 SP2 環境下,使用 MySQL Cluster 7.1.3 版本搭建雙節點叢集的完整流程,涵蓋架構概念、節點規劃、配置文件編寫、服務啟動順序及驗證測試。
MySQL Cluster 採用「無共享」架構,每個節點擁有獨立記憶體與磁碟,避免單點故障。叢集包含三類邏輯節點:
邏輯節點可部署在同一物理機器上,但生產環境強烈建議管理節點與數據節點物理隔離,防止單機故障導致整個叢集癱瘓。
| 角色 | IP 地址 | 承擔邏輯節點 |
|---|---|---|
| 機器 A | 10.0.0.201 | MGM、SQL1、NDBD1 |
| 機器 B | 10.0.0.202 | SQL2、NDBD2 |
軟體版本:MySQL Cluster GPL 7.1.3 (對應 MySQL 5.1.44),下載免安裝版 mysql-cluster-gpl-noinstall-7.1.3-win32.zip。
網路需求:節點間通訊未加密,需高速區域網絡(建議千兆以上),不建議跨網段或公網部署。
建立目錄 D:\mysql-cluster,編寫 config.ini:
[NDBD DEFAULT]
NoOfReplicas=1
[MYSQLD DEFAULT]
[NDB_MGMD DEFAULT]
[TCP DEFAULT]
# Management Server
[NDB_MGMD]
hostname=10.0.0.201
# Storage Engines (Data Nodes)
[NDBD]
hostname=10.0.0.201
datadir=D:\data
[NDBD]
hostname=10.0.0.202
datadir=D:\data
# SQL Engines
[MYSQLD]
hostname=10.0.0.201
[MYSQLD]
hostname=10.0.0.202
關鍵參數說明:NoOfReplicas=1 表示單副本(測試用,生產建議 2);管理節點預設端口 1186,數據節點 2202 (5.0.3+ 可自動分配)。
D:\mysql-cluster-gpl-noinstall-7.1.3-win32,將 bin 目錄加入系統 PATH。mysqld.exe -install mysqlmysql 服務設置為「手動」啟動。my-small.ini 為 my.ini,建立 D:\tmp 目錄。D:\data。my.ini,在 [mysqld] 區段末尾添加:# SQL 叢集節點
ndbcluster
ndb-connectstring=10.0.0.201
[mysql_cluster] 區段供數據節點使用:[mysql_cluster]
ndb-connectstring=10.0.0.201
ndb_mgmd.exe -f D:\mysql-cluster\config.ini --configdir=D:\mysql-cluster==CONFIRMED== 表示成功。ndbd.exe --initialndbd.exe--initial,否則會清空數據節點所有數據。net start mysql 或直接執行 mysqld.exe。使用 ndb_mgm.exe 客戶端連接管理節點:
SHOW:查看節點連接狀態。(not connected, accepting connect from ...)。SHUTDOWN:關閉管理節點及所有數據節點 (SQL 節點需單獨關閉)。-- 在 SQL1 建表並插入數據 (必須指定 ENGINE=NDBCLUSTER)
CREATE TABLE city (
nId MEDIUMINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
sName VARCHAR(20) NOT NULL
) ENGINE=NDBCLUSTER DEFAULT CHARSET=utf8;
INSERT INTO city VALUES (1, 'city-1'), (2, 'city-2');
-- 在 SQL2 查詢
SELECT * FROM city;
若能查到數據,說明同步正常。另可測試單點故障:中斷一個 ndbd.exe,觀察 SQL 節點是否仍可讀寫;重啟該數據節點後,驗證數據自動恢復一致性。
