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

MySQL Cluster 叢集入門部署教學:從架構概念到實戰驗證

     編輯:MySQL 綜合教學

MySQL Cluster 叢集入門部署教學:從架構概念到實戰驗證

MySQL Cluster(NDB Cluster)以「高可用、高即時、高冗餘、強擴展」著稱,採用無共享架構,無單點故障。本文記錄基於 MySQL Cluster 7.2.6 的最小化部署流程,涵蓋三大節點角色規劃、配置細節、啟動順序與驗證測試。

一、核心架構概念

節點類型角色啟動命令說明
管理節點 (MGM)叢集配置、日誌、啟停節點、備份管理ndb_mgmd必須最先啟動,其他節點從此獲取配置
數據節點 (NDB)儲存實際資料,支援分片與副本ndbd / ndbmtd數量 = 副本數 × 片段數,首次啟動需 --initial
SQL 節點對外提供 MySQL 服務,接收應用請求mysqld需在 my.cnf 啟用 ndbcluster 引擎

二、部署拓撲規劃(兩機六節點)

  • 10.1.6.205:MGM(1) + NDB(3) + SQL(5)
  • 10.1.6.203:NDB(2) + SQL(4)
  • 管理節點僅部署一台(生產建議雙管理節點)

三、安裝與基礎配置

1. 解壓二進制包

tar -C /usr/local -xzvf mysql-cluster-gpl-7.2.6-linux2.6-x86_64.tar.gz
ln -s /usr/local/mysql-cluster-gpl-7.2.6 /usr/local/mysql
cd /usr/local/mysql
scripts/mysql_install_db --user=mysql
chown -R mysql:mysql /usr/local/mysql

2. SQL 節點配置 /etc/my.cnf

[mysqld]
basedir=/usr/local/mysql/
datadir=/usr/local/mysql/data/
user=mysql
port=3306
socket=/tmp/mysql.sock
ndbcluster
max_connect_errors=10000
ndb-connectstring=10.1.6.205
connect_timeout=300

[mysql_cluster]
ndb-connectstring=10.1.6.205

3. 管理節點配置 /opt/cluster/config.ini

[ndbd default]
NoOfReplicas=2
DataMemory=80M
IndexMemory=18M

[tcp default]
portnumber=2205

[ndb_mgmd]
NodeId=1
hostname=10.1.6.205
datadir=/opt/cluster

[ndbd]
NodeId=2
hostname=10.1.6.203
datadir=/usr/local/mysql/data

[ndbd]
NodeId=3
hostname=10.1.6.205
datadir=/usr/local/mysql/data

[mysqld]
NodeId=4
hostname=10.1.6.203

[mysqld]
NodeId=5
hostname=10.1.6.205

[mysqld]  # 允許任意 IP 連接

四、啟動流程(順序嚴禁顛倒)

  1. 啟動管理節點:
    /usr/local/mysql/bin/ndb_mgmd -f /opt/cluster/config.ini
  2. 啟動數據節點(首次需 --initial):
    # 兩台機器分別執行
    /usr/local/mysql/bin/ndbd --initial

    後續重啟直接用 ndbd。

  3. 啟動 SQL 節點:
    /usr/local/mysql/bin/mysqld_safe --defaults-file=/etc/my.cnf &

五、叢集狀態驗證

/usr/local/mysql/bin/ndb_mgm
-- NDB Cluster -- Management Client --
ndb_mgm> SHOW
Cluster Configuration
---------------------
[ndbd(NDB)] 2 node(s)
id=2 @10.1.6.203 (Nodegroup: 0, Master)
id=3 @10.1.6.205 (Nodegroup: 0)
[ndb_mgmd(MGM)] 1 node(s)
id=1 @10.1.6.205
[mysqld(API)] 4 node(s)
id=4 @10.1.6.203
id=5 @10.1.6.205
id=6,7 (not connected, accepting any host)

六、功能測試

1. 建立 NDB 表(必須指定引擎)

mysql> USE test;
mysql> CREATE TABLE dave (num INT(10)) ENGINE=NDB;
mysql> INSERT INTO dave VALUES (100);
mysql> SELECT * FROM dave;

2. 跨節點資料同步驗證

在 10.1.6.205 (SQL 節點 2) 查詢:

mysql> USE test;
mysql> SELECT * FROM dave;
+------+
| num  |
+------+
|  100 |
+------+

3. 監控記憶體使用

mysql> SELECT * FROM ndbinfo.memoryusage;
+---------+--------------+--------+------------+----------+-------------+
| node_id | memory_type  | used   | used_pages | total    | total_pages |
+---------+--------------+--------+------------+----------+-------------+
| 2       | Data memory  | 851968 | 26         | 83886080 | 2560        |
| 2       | Index memory | 212992 | 26         | 19136512 | 2336        |
| 3       | Data memory  | 851968 | 26         | 83886080 | 2560        |
| 3       | Index memory | 212992 | 26         | 19136512 | 2336        |
+---------+--------------+--------+------------+----------+-------------+

注意:DataMemory/IndexMemory 用盡會導致寫入失敗,需調整 config.ini 並重啟生效。

七、關閉叢集

# 1. 關閉所有數據節點與管理節點
/usr/local/mysql/bin/ndb_mgm -e shutdown

# 2. 關閉 SQL 節點
/usr/local/mysql/bin/mysqladmin -uroot -p shutdown

八、關鍵避坑指南

  • 網路隔離:Cluster 節點間通訊無加密,必須部署在獨立 VLAN/子網。
  • 記憶體規劃:DataMemory/IndexMemory 須預留足夠空間,生產環境建議實體記憶體 64GB+。
  • 單點管理節點風險:生產務必部署雙 MGM 節點,config.ini 同步一致。
  • 版本一致性:所有節點必須使用相同版本二進制包。
  • 防火牆:開放 1186 (MGM)、2205 (NDB)、3306 (SQL) 端口。

MySQL Cluster 部署雖步驟較多,但邏輯清晰:配置 → 啟動 MGM → 啟動 NDB (--initial) → 啟動 SQL → 驗證。掌握三大節點職責與啟動順序,即可快速建立高可用分佈式資料庫叢集。後續可整合 Keepalived + HAProxy 實現 SQL 節點負載均衡與自動故障轉移。

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