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参数,避免因无其他节点而启动失败):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多主集群,实现数据的实时同步、多主写入及故障自动转移。