Debian環境下搭建MariaDB Galera Cluster多主集群指南
galera-node1
、galera-node2
、galera-node3
),確保IP可達且系統已更新(sudo apt update && sudo apt upgrade -y
)。galera-4
)。/etc/hosts
中添加節點IP與主機名映射),確保節點間SSH免密登錄。在所有節點上執行以下命令,安裝MariaDB Server及Galera provider:
sudo apt install -y mariadb-server mariadb-client galera-4
安裝完成后,MariaDB服務會自動啟動,可通過systemctl status mariadb
確認狀態。
編輯/etc/mysql/mariadb.conf.d/50-server.cnf
(或/etc/mysql/conf.d/galera.cnf
),添加/修改以下配置:
[mysqld]
# 基礎配置
bind-address = 0.0.0.0 # 允許遠程連接
default-storage-engine = InnoDB # 必須使用InnoDB引擎
innodb_autoinc_lock_mode = 2 # 支持并行復制
binlog_format = ROW # 必須使用ROW格式
# Galera集群配置
wsrep_on = ON # 開啟Galera功能
wsrep_provider = /usr/lib/galera/libgalera_smm.so # Galera provider路徑(Debian默認路徑)
wsrep_cluster_address = "gcomm://192.168.100.111,192.168.100.112,192.168.100.113" # 所有節點IP列表(首次啟動需完整)
wsrep_node_address = 192.168.100.111 # 當前節點IP
wsrep_node_name = galera-node1 # 當前節點名稱(自定義,需唯一)
wsrep_cluster_name = MariaDB_Cluster # 集群名稱(所有節點需一致)
wsrep_sst_method = xtrabackup-v2 # 數據同步方法(推薦xtrabackup-v2,需安裝xtrabackup)
注意:
wsrep_cluster_address
在首次啟動時需包含所有節點IP,后續節點加入時可簡化為gcomm://
(由集群自動發現)。
sudo systemctl stop mariadb
galera_new_cluster
腳本啟動第一個節點(該腳本會傳遞--wsrep-new-cluster
參數,避免因無其他節點而啟動失?。?pre class="hljs">sudo galera_new_cluster
mysql -uroot -p -e "SHOW STATUS LIKE 'wsrep%';"
關鍵指標說明:
wsrep_cluster_size
:集群節點數(應為1,后續節點加入后會增加);wsrep_ready
:是否準備好接收連接(應為ON
);wsrep_connected
:是否連接到集群(應為ON
)。在node2、node3上重復以下步驟:
sudo systemctl stop mariadb
wsrep_cluster_address
更新為所有節點IP列表(如"gcomm://192.168.100.111,192.168.100.112,192.168.100.113"
),并設置當前節點的wsrep_node_address
和wsrep_node_name
。sudo systemctl start mariadb
SHOW STATUS LIKE 'wsrep%';
,確認wsrep_cluster_size
增加至3(所有節點均已加入)。-- 在node1上執行
CREATE DATABASE test_cluster;
USE test_cluster;
CREATE TABLE users (id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(50));
INSERT INTO users (name) VALUES ('Alice'), ('Bob');
-- 在node2上執行
USE test_cluster;
SELECT * FROM users; -- 應能看到Alice、Bob兩條記錄
sudo systemctl stop mariadb
),在node2上插入數據,確認node3仍能同步(驗證集群無單點故障)。ufw
或iptables
放通以下端口(所有節點):sudo ufw allow 3306/tcp # MariaDB客戶端連接
sudo ufw allow 4567/tcp # Galera復制流量
sudo ufw allow 4567/udp # Galera多播
sudo ufw allow 4444/tcp # SST傳輸
sudo ufw allow 4568/tcp # IST傳輸
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'StrongPassword' WITH GRANT OPTION;
FLUSH PRIVILEGES;
mysqldump
或xtrabackup
定期備份數據,建議配置自動化備份腳本。通過以上步驟,即可在Debian環境下搭建高可用的MariaDB Galera Cluster多主集群,實現數據的實時同步、多主寫入及故障自動轉移。