採用 6 台伺服器構建:1 HAProxy、1 管理節點、2 SQL 節點、2 數據節點,實現 MySQL Cluster 讀寫負載均衡與自動故障切換。
| 角色 | IP | 數量 |
|---|---|---|
| HAProxy | 1.1.1.11 | 1 |
| Management (ndb_mgmd) | 1.1.1.30 | 1 |
| SQL Node (mysqld) | 1.1.1.21、1.1.1.22 | 2 |
| Data Node (ndbd) | 1.1.1.31、1.1.1.32 | 2 |
yum install haproxy -y
vim /etc/haproxy/haproxy.cfg
核心配置:
global
log 127.0.0.1 local0 info
maxconn 4096
daemon
pidfile /usr/local/haproxy/haproxy.pid
defaults
log global
mode tcp
option dontlognull
retries 3
maxconn 8000
timeout connect 3s
timeout client 30s
timeout server 30s
listen mysql
bind 0.0.0.0:3306
mode tcp
option mysql-check user root
balance roundrobin
server mysql1 1.1.1.21:3306 check port 3306 inter 1s rise 2 fall 2
server mysql2 1.1.1.22:3306 check port 3306 inter 1s rise 2 fall 2
listen stats
bind 0.0.0.0:8888
mode http
stats enable
stats uri /dbs
stats auth admin:hello123
啟動:/usr/sbin/haproxy -f /etc/haproxy/haproxy.cfg。瀏覽器訪問 :8888/dbs 監控狀態。

wget https://cdn.mysql.com/Downloads/MySQL-Cluster-7.3/mysql-cluster-gpl-7.3.7-linux-glibc2.5-x86_64.tar.gz
groupadd mysql; useradd -g mysql mysql
tar xf ...; mv ... /usr/local/mysql
chown -R mysql:mysql /usr/local/mysql
cd /usr/local/mysql; scripts/mysql_install_db --user=mysql
/var/lib/mysql-cluster/config.ini[NDBD DEFAULT]
NoOfReplicas=2
DataMemory=1024M
IndexMemory=500M
[NDB_MGMD]
NodeId=1
HostName=1.1.1.30
DataDir=/usr/local/mysql/data
[NDBD]
NodeId=2
HostName=1.1.1.31
DataDir=/usr/local/mysql/data
[NDBD]
NodeId=3
HostName=1.1.1.32
DataDir=/usr/local/mysql/data
[mysqld]
NodeId=4; HostName=1.1.1.21
[mysqld]
NodeId=5; HostName=1.1.1.22
[mysqld]
NodeId=6; HostName=1.1.1.254 # 預留
/etc/my.cnf[mysqld]
ndbcluster
ndb-connectstring=1.1.1.30:1186
[MYSQL_CLUSTER]
ndb-connectstring=1.1.1.30:1186
[NDB_MGM]
connect-string=1.1.1.30
/etc/my.cnf(含雙主同步參數)[mysqld]
server-id=4 # 另一節點為 5
log-bin=/usr/local/mysql/log/mysql-bin.log
auto-increment-increment=2
auto-increment-offset=1
binlog-ignore-db=mysql
ndbcluster
ndb-connectstring=1.1.1.30
ndb_mgmd -f /var/lib/mysql-cluster/config.ini(新增節點後用 --reload 或 --initial)ndbd --initial(僅首次用 --initial)service mysqld start關閉順序相反。
ndb_mgm -e show

SQL1 建庫建表插入 → SQL2 可見;SQL2 插入 → SQL1 可見。
停止 SQL2 服務,HAProxy 後台顯示 DOWN,1.1.1.11:3306 仍正常服務。

HAProxy 健康檢查 + MySQL Cluster 多活架構,實現讀寫分離與秒級故障切換。生產環境建議:
• 管理節點雙機熱備
• DataMemory/IndexMemory 按實際數據量規劃
• HAProxy 監控頁面加固認證
• 定期演練故障切換流程