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

MySQL Cluster (NDB) 叢集部署入門測試:架構、節點角色、安裝配置與驗證

     編輯:MySQL 綜合教學

MySQL Cluster 核心架構

MySQL Cluster 採用 Shared-Nothing (無共享) 架構,核心組件:

  • 管理節點 (MGM, ndb_mgmd):叢集配置、啟動/停止協調、備份管理、日誌收集
  • 資料節點 (NDBD, ndbd/ndbmtd):儲存資料 (NDB 引擎)、分片、複本、同步、故障轉移
  • SQL 節點 (mysqld --ndbcluster):標準 MySQL 介面、解析 SQL、路由至資料節點、無資料儲存
  • API 節點:直接存取 NDB API 的應用 (高效能、無 SQL 解析開銷)

節點類型與進程對應

測試拓撲規劃 (5 節點)

角色進程配置檔區段預設埠
管理節點ndb_mgmd[NDB_MGMD]1186
資料節點ndbd (單執行緒) / ndbmtd (多執行緒)[NDBD]動態分配 (2202 起)
SQL 節點mysqld[MYSQLD]3306
主機名IP角色
db1192.168.0.1MGM
db2192.168.0.2SQL 1
db3192.168.0.3SQL 2
db4192.168.0.4NDBD 1
db5192.168.0.5NDBD 2

要求:同一子網、低延遲、關閉防火牆或開放 1186/3306/動態埠、同步時間 (NTP)、/etc/hosts 互解。

安裝前準備

# 所有節點建立統一運行用戶
groupadd -r mysql
useradd -r -g mysql -s /sbin/nologin mysql

# 下載 MySQL Cluster 套件 (含 NDB)
# 官網: https://dev.mysql.com/downloads/cluster/
# 解壓至 /usr/local/mysql-cluster

配置檔案

1. 管理節點: /usr/local/mysql-cluster/config.ini

[NDBD DEFAULT]
NoOfReplicas=2          # 複本數,資料節點數需為倍數
DataMemory=512M         # 記憶體資料大小
IndexMemory=64M         # 索引記憶體
NoOfFragmentLogFiles=16
MaxNoOfConcurrentOperations=100000

[TCP DEFAULT]
SendBufferMemory=2M
ReceiveBufferMemory=2M

[NDB_MGMD]
HostName=db1
DataDir=/var/lib/mysql-cluster
NodeId=1

[NDBD]
HostName=db4
NodeId=2
DataDir=/var/lib/mysql-cluster

[NDBD]
HostName=db5
NodeId=3
DataDir=/var/lib/mysql-cluster

[MYSQLD]
HostName=db2
NodeId=4

[MYSQLD]
HostName=db3
NodeId=5

2. SQL/資料節點: /etc/my.cnf

[mysqld]
ndbcluster                      # 啟用 NDB 引擎
ndb-connectstring=db1           # 管理節點主機名
default_storage_engine=ndbcluster

[mysql_cluster]
ndb-connectstring=db1

啟動流程 (順序關鍵)

  1. 管理節點 (db1):
    ndb_mgmd -f /usr/local/mysql-cluster/config.ini --initial
  2. 資料節點 (db4, db5):
    # 首次啟動需 --initial
    ndbd --initial
    # 後續啟動
    ndbd
  3. SQL 節點 (db2, db3):
    systemctl start mysqld
    # 或
    mysqld_safe --defaults-file=/etc/my.cnf &

驗證叢集狀態

# 管理節點執行
ndb_mgm
-- 進入管理客戶端
ndb_mgm> SHOW
Connected to Management Server at: db1:1186
Cluster Configuration
---------------------
[ndbd(NDB)] 2 node(s)
id=2 @192.168.0.4 (Version: 8.0.x, Nodegroup: 0, Master)
id=3 @192.168.0.5 (Version: 8.0.x, Nodegroup: 0)
[ndb_mgmd(MGM)] 1 node(s)
id=1 @192.168.0.1 (Version: 8.0.x)
[mysqld(SQL)] 2 node(s)
id=4 @192.168.0.2 (Version: 8.0.x)
id=5 @192.168.0.3 (Version: 8.0.x)

建立 NDB 表與測試

# SQL 節點 db2
mysql -u root -p
CREATE DATABASE test_cluster;
USE test_cluster;
CREATE TABLE city (
    id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(50) NOT NULL
) ENGINE=NDBCLUSTER DEFAULT CHARSET=utf8mb4;

INSERT INTO city (name) VALUES ('Taipei'), ('Tokyo'), ('Seoul');

# SQL 節點 db3 驗證同步
mysql -u root -p -e "USE test_cluster; SELECT * FROM city;"

關鍵限制與注意事項

  • NDB 表必須有主鍵 (無則隱性建立,佔空間)
  • 不支援外鍵 (應用層維護關聯)
  • 不支援全文索引、空間索引
  • 交易隔離級別僅 READ COMMITTED
  • 大記憶體需求:DataMemory/IndexMemory 需規劃足夠 RAM
  • 網路延遲敏感:跨資料中心部署需專線/低延遲

安全關閉流程

# 管理節點
ndb_mgm -e shutdown

# SQL 節點
mysqladmin -u root -p shutdown

總結

MySQL Cluster (NDB) 提供高可用、自動分片、同步複本的分散式資料庫能力。部署核心:config.ini 定義拓撲 → 管理節點優先啟動 → 資料節點 --initial 首啟 → SQL 節點掛載 NDB 引擎。適用場景:高併發、低延遲、資料量可控 (記憶體容量)、可接受功能限制 (無外鍵/全文) 的電信、遊戲、即時競價等領域。生產部署必須進行故障注入測試 (殺節點、斷網、磁碟滿) 驗證自動恢復能力。

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