首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

CentOS 6.5 部署 MySQL Cluster 7.2 完整教學(多節點架構)

     編輯:MySQL 資料庫相關知識

MySQL Cluster (NDB) 提供高可用、分片、內存運算特性。本文記錄在 CentOS 6.5 (32-bit) 上部署 5 節點 Cluster(1 管理、2 數據、2 SQL)的完整步驟,含套件移除、使用者建立、配置檔編寫、防火牆、啟動順序與驗證測試。

架構規劃

角色主機名IPNodeId
管理節點 (MGM)mgm192.168.1.711
數據節點 1 (NDBD1)ndbd1192.168.1.722
數據節點 2 (NDBD2)ndbd2192.168.1.733
SQL 節點 1 (SQL1)sql1192.168.1.744
SQL 節點 2 (SQL2)sql2192.168.1.755
預留 SQL 節點--6,7

全節點通用前置作業

# 移除系統自帶 MySQL
rpm -qa | grep mysql
rpm -e --nodeps mysql-libs-5.1.71-1.el6.i686

# 建立 mysql 用戶/組
groupadd mysql
useradd -g mysql mysql

# 解壓安裝包至 /usr/local/mysql
cd /usr/local
tar -xvf mysql-cluster-gpl-7.2.25-linux2.6-i686.tar.gz
mkdir mysql
mv mysql-cluster-gpl-7.2.25-linux2.6-i686/* mysql/
chown -R mysql:mysql mysql/

# 初始化系統表(管理/數據節點執行)
cd /usr/local/mysql
scripts/mysql_install_db --user=mysql
# SQL 節點指定 datadir
scripts/mysql_install_db --user=mysql --datadir=/var/mysql/data

管理節點配置 (config.ini)

mkdir -p /var/lib/mysql-cluster /var/mysql/data /var/mysql/log
vim /var/lib/mysql-cluster/config.ini

[NDBD DEFAULT]
NoOfReplicas=2

[NDB_MGMD]
NodeId=1
HostName=192.168.1.71
DataDir=/var/mysql/data

[NDBD]
NodeId=2
HostName=192.168.1.72
DataDir=/var/mysql/data

[NDBD]
NodeId=3
HostName=192.168.1.73
DataDir=/var/mysql/data

[MYSQLD]
NodeId=4
HostName=192.168.1.74

[MYSQLD]
NodeId=5
HostName=192.168.1.75

# 預留空節點,防數據節點斷開重啟報錯
[MYSQLD]
NodeId=6
[mysqld]
NodeId=7

複製管理工具至 PATH:

cp /usr/local/mysql/bin/ndb_mgm /usr/local/bin/
cp /usr/local/mysql/bin/ndb_mgmd /usr/local/bin/
cp /var/lib/mysql-cluster/config.ini /usr/local/bin/

防火牆開放 Cluster 通訊埠(1186, 2202, 3306 等):

vim /etc/sysconfig/iptables
# 加入規則後
/etc/init.d/iptables restart

管理節點啟動 防火牆配置

數據節點配置 (my.cnf)

mkdir -p /var/mysql/data /var/mysql/log
vim /etc/my.cnf

[mysqld]
datadir=/var/mysql/data
socket=/var/mysql/mysql.sock
user=mysql
symbolic-links=0
ndbcluster
ndb-connectstring=192.168.1.71

[MYSQL_CLUSTER]
ndb-connectstring=192.168.1.71

[NDB_MGM]
connect-string=192.168.1.71

[mysqld_safe]
log-error=/var/mysql/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

SQL 節點配置 (my.cnf + 啟動腳本)

cp /usr/local/mysql/support-files/mysql.server /etc/rc.d/init.d/mysqld
chmod +x /etc/rc.d/init.d/mysqld
chkconfig --add mysqld

mkdir -p /var/mysql/data /var/mysql/log
chown -R mysql:mysql /var/mysql
ln -s /usr/local/mysql/bin/mysql /usr/bin/
ln -s /var/mysql/mysql.sock /tmp/mysql.sock

vim /etc/my.cnf
[mysqld]
datadir=/var/mysql/data
socket=/var/mysql/mysql.sock
user=mysql
symbolic-links=0
log-bin=/var/mysql/log/mysql-bin.log
max_connections=1000
binlog-ignore-db=mysql
auto-increment-increment=2
auto-increment-offset=1
ndbcluster
ndb-connectstring=192.168.1.71

[MYSQL_CLUSTER]
ndb-connectstring=192.168.1.71

[NDB_MGM]
connect-string=192.168.1.71

[mysqld_safe]
log-error=/var/mysql/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

叢集啟動順序(關鍵)

  1. 管理節點:ndb_mgmd -f /var/lib/mysql-cluster/config.ini --initial(首次或修改配置後必加 --initial)
  2. 數據節點:/usr/local/mysql/bin/ndbd --initial
  3. SQL 節點:service mysqld start

關閉順序相反:SQL → 數據 → 管理。

管理節點啟動 數據節點啟動 SQL節點啟動

驗證叢集狀態

ndb_mgm
ndb_mgm> SHOW

SHOW輸出

預期輸出顯示 1 Management、2 Data Nodes (Starting/Started)、2 MySQLD 節點全部 Connected。

功能測試:SQL 節點間資料同步

# SQL1 執行
mysql -e "CREATE DATABASE tianyuan; USE tianyuan; CREATE TABLE test(i INT, name VARCHAR(10)) ENGINE=ndbcluster; INSERT INTO test VALUES(1,'ceshi'); SELECT * FROM test;"

# SQL2 驗證
mysql -e "SHOW DATABASES; USE tianyuan; SELECT * FROM test;"

關鍵注意事項

  • 引擎必須指定 ENGINE=ndbcluster,預設 InnoDB/MyISAM 不會同步至 Cluster。
  • NoOfReplicas=2 要求至少 2 個數據節點,節點數需為副本數倍數。
  • 防火牆/SELinux:節點間需互通 TCP 1186 (管理)、2202 (數據節點)、3306 (SQL)。
  • 記憶體規劃:NDB 為內存數據庫,DataMemory/IndexMemory 需按資料量預留(配置於 config.ini [NDBD DEFAULT])。
  • 版本對應:Cluster 7.2 對應 MySQL 5.5 代碼庫,生產建議升級至 7.5/7.6 (MySQL 5.6/5.7 基礎) 或 8.0。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved