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

MySQL 多主多活 Galera Cluster 部署實戰:從下載到驗證同步

     編輯:MySQL 綜合教學

前言:Galera 讓 MySQL 真正實現「多主同步寫入」

傳統主從復制是單向異步,寫入只能走主庫,從庫只讀,切換延遲、數據不一致風險高。**Galera Cluster (wsrep API)** 通過**認證式同步復制**,實現多節點**同時讀寫、強一致性、自動故障轉移**,是 MySQL 高可用架構的主流選擇。本文記錄三節點部署全流程(MariaDB 10.0 + Galera 3),含配置細節、啟動順序、驗證命令。

一、軟體獲取與版本對應

二、編譯 Galera 庫 (若用源碼包)

# 依賴
yum -y install boost-devel scons check openssl-devel

# 編譯
cd galera-3-xx
./scripts/build.sh
# 產出 libgalera_smm.so,複製到 MySQL plugin 目錄或指定路徑

三、核心配置 my.cnf (wsrep 參數)

三節點配置文件 my11.cnf、my21.cnf、my31.cnf,差異僅在 wsrep_node_address 與端口。

[mysqld]
# 基礎
server_id=11                 # 每節點唯一
bind_address=0.0.0.0
port=14011                   # 14011/14021/14031
datadir=/data/mysql11
socket=/tmp/mysql11.sock

# Galera 核心
wsrep_provider=/path/to/libgalera_smm.so
wsrep_cluster_address='gcomm://192.168.1.8:24011,192.168.1.8:24021,192.168.1.8:24031'
wsrep_node_address='192.168.1.8:24011'   # 本節點 IP:Galera端口(非MySQL端口)
wsrep_cluster_name='my_galera_cluster'
wsrep_sst_method=rsync        # 狀態傳輸方式:rsync/xtrabackup-v2
wsrep_node_name='node11'

# InnoDB 優化 (Galera 必須 InnoDB)
default_storage_engine=InnoDB
innodb_autoinc_lock_mode=2    # 2 = interleaved,Galera 要求
innodb_flush_log_at_trx_commit=1
binlog_format=ROW             # 必須 ROW 格式

四、初始化數據目錄

scripts/mysql_install_db --defaults-file=etc/my11.cnf
scripts/mysql_install_db --defaults-file=etc/my21.cnf
scripts/mysql_install_db --defaults-file=etc/my31.cnf

五、啟動順序:首節點引導,其餘加入

  1. 啟動首節點 (引導集群):
    bin/mysqld_safe --defaults-file=etc/my11.cnf --wsrep_cluster_address=gcomm:// &
    gcomm:// 空列表意味著**引導新集群**,成為 Primary Component。
  2. 待首節點 Ready 後,啟動其餘節點(使用配置文件中的完整 gcomm 列表):
    bin/mysqld_safe --defaults-file=etc/my21.cnf &
        bin/mysqld_safe --defaults-file=etc/my31.cnf &
  3. 後續節點重啟**無需**加 --wsrep_cluster_address=gcomm://,直接用配置文件參數即可自動加入現有集群。

六、驗證集群同步


七、關鍵狀態變量檢查

SHOW VARIABLES LIKE 'wsrep_on';        -- ON 表示 Galera 功能啟用
SHOW STATUS LIKE 'wsrep_connected';    -- ON 已連接集群
SHOW STATUS LIKE 'wsrep_ready';        -- ON 可接受 SQL 請求 (最關鍵)
SHOW STATUS LIKE 'wsrep_cluster_size'; -- 3 表示三節點全在線
SHOW STATUS LIKE 'wsrep_local_state_comment'; -- Synced 表示數據同步完成

八、生產環境避坑清單

  • 最少 3 節點(奇數),防腦裂;兩節點需加 garbd 仲裁節點。
  • 網絡延遲 < 2ms,建議同機房/可用區專線互聯;跨機房同步延遲會嚴重影響寫入性能(Galera 同步復制 = 寫入延遲 = 最慢節點應答時間)。
  • 大事務拆分:Galera 認證階段需廣播寫集合,大事務會阻塞整個集群流控;業務層拆分或用 wsrep_trx_fragment_size (實驗特性)。
  • SST 方式選 xtrabackup-v2:非阻塞、增量、速度快;rsync 會阻塞 Donor 節點。
  • 監控指標:wsrep_flow_control_paused (流控比例)、wsrep_local_send_queue/recv_queue (隊列積壓)、wsrep_cluster_status (Primary/Non-primary)。
  • 與 ProxySQL/MaxScale 配合:讀寫分離、故障自動切換、查詢路由、熔斷限流。

結語

Galera Cluster 將 MySQL 從「單主异步」推向「多主同步」,是高可用架構的關鍵基建。**嚴守三節點奇數、低延遲網絡、InnoDB+ROW格式、xtrabackup-v2 SST、監控流控隊列** 五大鐵律,即可構建穩健的多活數據庫集群。下一步:接入 ProxySQL 實現應用層無感知故障轉移。

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