首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

Windows Server 2003 配置 MySQL Cluster 集群完整教程

     編輯:MySQL 綜合教學

Windows Server 2003 配置 MySQL Cluster 集群完整教程

MySQL Cluster 基於 NDB 存儲引擎,提供高可用、高冗餘、內存計算的分布式數據庫方案。本文記錄在 Windows Server 2003 環境下部署 MySQL Cluster 7.1.3(基於 MySQL 5.1)的完整流程,含節點規劃、配置文件、服務安裝、啟動順序與測試驗證。

架構概念

特點:無共享架構、單點無故障、內存+磁盤混合存儲、節點邏輯分離可共機部署。

環境規劃(雙機部署)

節點類型角色進程
管理節點 (MGM)集群配置、日誌、仲裁ndb_mgmd.exe
數據節點 (NDBD)數據存儲、同步、備份ndbd.exe
SQL 節點 (API)處理 SQL 請求、客戶端接入mysqld.exe
機器IP角色
Node110.0.0.201MGM + SQL1 + NDBD1
Node210.0.0.202SQL2 + NDBD2

注意:生產環境 MGM 應獨立部署,避免單點故障影響管理。

軟件獲取

Node1:管理節點配置

# 建立目錄
mkdir D:\mysql-cluster
mkdir D:\data

# 建立 config.ini
# 路徑: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

雙節點通用:MySQL 服務安裝與配置

# 1. 解壓至 D:\mysql-cluster-gpl-noinstall-7.1.3-win32
# 2. 將 bin 目錄加入系統 PATH
# 3. 安裝為 Windows 服務
mysqld.exe -install mysql

# 4. 服務管理器中設為「手動啟動」(避免依賴順序問題)
# 5. 複製配置模板
copy my-small.ini my.ini

# 6. 建立臨時目錄
mkdir D:\tmp

my.ini 關鍵配置(兩台機器同樣修改)

[mysqld]
# 啟用 NDB Cluster 引擎
ndbcluster
# 連接管理節點
ndb-connectstring=10.0.0.201

[mysql_cluster]
ndb-connectstring=10.0.0.201

啟動順序(關鍵:嚴格按序)

1. 啟動管理節點 (Node1)

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

輸出關鍵標記:==INITIAL== → ==CONFIRMED== 表示配置生效。

2. 啟動數據節點 (Node1 & Node2 並行)

# 首次啟動必須加 --initial(初始化數據目錄)
ndbd.exe --initial

# 後續重啟僅需
ndbd.exe

警告:正常運行集群中執行 --initial 會**清空所有數據**!

3. 啟動 SQL 節點 (兩台機器)

net start mysql
# 或
service mysqld start

集群管理與驗證

# 進入管理客戶端
ndb_mgm.exe

# 查看狀態
ndb_mgm> SHOW

啟動完成後正常輸出

Cluster Configuration
---------------------
[ndbd(NDB)] 2 node(s)
id=2 @10.0.0.201 (mysql-5.1.44 ndb-7.1.3, Nodegroup: 0, Master)
id=3 @10.0.0.202 (mysql-5.1.44 ndb-7.1.3, Nodegroup: 1)

[ndb_mgmd(MGM)] 1 node(s)
id=1 @10.0.0.201 (mysql-5.1.44 ndb-7.1.3)

[mysqld(API)] 2 node(s)
id=4 @10.0.0.201 (mysql-5.1.44 ndb-7.1.3)
id=5 @10.0.0.202 (mysql-5.1.44 ndb-7.1.3)

關閉集群

# 關閉數據節點與管理節點
ndb_mgm -e shutdown

# 關閉 SQL 節點
net stop mysql
# 或
mysqladmin -u root shutdown

嚴禁:直接殺進程或關機,會導致內存數據未刷盤丟失。

功能測試

-- Node1 創建 NDB 表並插入
CREATE TABLE city (
  id MEDIUMINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
  name VARCHAR(20) NOT NULL
) ENGINE=ndbcluster DEFAULT CHARSET=utf8;

INSERT INTO city VALUES (1, 'city-1'), (2, 'city-2');

-- Node2 查詢驗證同步
SELECT * FROM city;
-- 應返回 2 行數據

關鍵限制與注意點

  • NDB 表必須有主鍵:無主鍵會自動生成隱含主鍵佔用內存
  • 網絡要求:高速局域網,節點間通信**不加密**,禁用跨公網部署
  • 內存規劃:DataMemory/IndexMemory 需充足,否則 OOM 導致節點被仲裁踢出
  • 版本選擇:選擇社區驗證穩定版,非最新版(如 7.1.3, 7.2.x 穩定分支)
  • 負載均衡:前端接 LVS/HAProxy 分發 SQL 節點

常見故障排查

MySQL Cluster 部署複雜度高,但提供了傳統主從無法比擬的高可用與寫入擴展能力。嚴格遵循啟動順序、監控關鍵指標、定期演練故障切換,是生產穩定運行的保障。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
現象原因對策
數據節點無法連接 MGM防火牆 1186/2202 埠、config.ini IP 錯誤開放埠、核對 hostname
仲裁失敗節點被踢網絡抖動、磁碟 IO 過高、內存不足調整 HeartbeatInterval、增加內存
SQL 節點報錯 Table doesn't exist建表未指定 ENGINE=ndbcluster補充引擎聲明
原有 MySQL Server 衝突端口、服務名、數據目錄衝突徹底卸載舊版