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

HAProxy + MySQL Cluster (NDB) 高可用架構部署全紀錄

     編輯:MySQL 綜合教學

HAProxy + MySQL Cluster (NDB) 高可用架構部署全紀錄

採用 6 台伺服器構建:1 HAProxy、1 管理節點、2 SQL 節點、2 數據節點,實現 MySQL Cluster 讀寫負載均衡與自動故障切換。

架構拓撲

角色IP數量
HAProxy1.1.1.111
Management (ndb_mgmd)1.1.1.301
SQL Node (mysqld)1.1.1.21、1.1.1.222
Data Node (ndbd)1.1.1.31、1.1.1.322

一、HAProxy 部署

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 監控狀態。

二、MySQL Cluster 7.3 安裝與配置

1. 所有節點安裝二進制包

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

2. 管理節點配置 /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  # 預留

3. 數據節點 /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

4. SQL 節點 /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

三、啟動順序(關鍵)

  1. 管理節點:ndb_mgmd -f /var/lib/mysql-cluster/config.ini(新增節點後用 --reload 或 --initial)
  2. 數據節點:ndbd --initial(僅首次用 --initial)
  3. SQL 節點:service mysqld start

關閉順序相反。

四、驗證測試

1. 集群狀態

ndb_mgm -e show

2. 數據同步測試

SQL1 建庫建表插入 → SQL2 可見;SQL2 插入 → SQL1 可見。

3. HA 故障切換測試

停止 SQL2 服務,HAProxy 後台顯示 DOWN,1.1.1.11:3306 仍正常服務。

總結

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

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