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

CentOS 6.5 部署 MySQL Cluster 7.3.7 完整實測:管理節點、資料節點、SQL 節點三角色架構

     編輯:MySQL 綜合教學

MySQL Cluster 架構概覽

MySQL Cluster 採用 Shared-Nothing 分散式架構,NDB 儲存引擎將資料置於記憶體,提供無單點故障、高可用、高擴展性。核心組件:

  • 管理節點:ndb_mgmd,叢集協調、仲裁、配置分發。
  • 資料節點:ndbd / ndbmtd,存儲資料分片、處理事務。
  • SQL 節點:mysqld,對外提供 MySQL 協議介面,路由請求至資料節點。

實測環境規劃

角色主機名IP
管理節點 + 資料節點1 + SQL節點1myqClter1192.168.55.15
資料節點2 + SQL節點2myqClter2192.168.55.16

部署步驟詳解

1. 系統準備

# 移除系統自帶 mysql-libs
rpm -qa | grep mysql
yum -y remove mysql-libs-5.1.71-1.el6.x86_64

# 建立 mysql 用戶
groupadd mysql
useradd -r -g mysql mysql

2. 解壓並部署二進制包

tar -zxvf mysql-cluster-gpl-7.3.7-linux-glibc2.5-x86_64.tar.gz
mv mysql-cluster-gpl-7.3.7-linux-glibc2.5-x86_64 /usr/local/mysql
cd /usr/local/mysql
chown -R root:mysql .
chown -R mysql data/

3. 初始化系統表

scripts/mysql_install_db --user=mysql

4. 配置啟動腳本

cp support-files/mysql.server /etc/init.d/mysqld
chkconfig --add mysqld

5. 部署管理節點(僅需二進制與配置)

cp bin/ndb_mgm* /usr/local/bin/
mkdir -p /var/lib/mysql-cluster
vi /var/lib/mysql-cluster/config.ini

config.ini 關鍵配置

[ndbd default]
NoOfReplicas=2
DataMemory=200M
IndexMemory=20M

[tcp default]
portnumber=2202

[ndb_mgmd]
hostname=192.168.55.15
datadir=/var/lib/mysql-cluster/

[ndbd]
hostname=192.168.55.15
datadir=/usr/local/mysql/data/

[ndbd]
hostname=192.168.55.16
datadir=/usr/local/mysql/data/

[mysqld]
hostname=192.168.55.15

[mysqld]
hostname=192.168.55.16

6. SQL 節點配置 my.cnf

cp support-files/my-default.cnf /etc/my.cnf
vi /etc/my.cnf
# 在 [mysqld] 下加入
ndbcluster
# 在 [mysql_cluster] 下加入
ndb-connectstring=192.168.55.15

7. 啟動順序(關鍵)

  1. 管理節點:ndb_mgmd -f /var/lib/mysql-cluster/config.ini
  2. 資料節點:ndbd --initial(兩台均需執行,首次加 --initial)
  3. SQL 節點:/etc/init.d/mysqld start

防火牆:確保 1186 (管理)、2202 (資料節點通訊)、3306 (SQL) 端口開放。

8. 叢集狀態驗證

ndb_mgm
ndb_mgm> SHOW

正常輸出應顯示 2 個資料節點 STARTED、1 個管理節點、2 個 SQL 節點 connected。

功能測試:NDB 表跨節點同步

# 連線 SQL 節點 1 建表插入
mysql -h 192.168.55.15 -p test
CREATE TABLE beigang (id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, name VARCHAR(30)) ENGINE=NDBCLUSTER;
INSERT INTO beigang VALUES (1, 'ndb t1'), (2, 'ndb t2');

# 連線 SQL 節點 2 查詢插入
mysql -h 192.168.55.16 -p test
SELECT * FROM beigang;  -- 可見 t1, t2
INSERT INTO beigang VALUES (3, 'ndb t3');

# 回節點 1 驗證
SELECT * FROM beigang;  -- 可見 t1, t2, t3

關閉順序

# 關閉管理與資料節點
ndb_mgm -e shutdown

# 關閉 SQL 節點
/etc/init.d/mysqld stop

關鍵限制與注意事項

  • 只有 ENGINE=NDB 或 NDBCLUSTER 的表才會分散儲存,其他引擎仍在本地 SQL 節點。
  • NDB 表必須有主鍵,否則自動產生隱藏主鍵(佔用額外儲存)。
  • 不支援外鍵、全文索引、空間索引(5.6 起支援部分)。
  • 記憶體參數 DataMemory/IndexMemory 需依實際資料量規劃,不足會導致寫入失敗。

小結

MySQL Cluster 適合高併發、低延遲、資料量可控的記憶體密集型場景。部署複雜度較高,生產環境建議引入自動化部署工具,並建立完善的監控(ndbinfo、資訊表、Grafana)與備份策略。

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