MariaDB Galera Cluster是多主同步集群解决方案,支持任意节点读写、自动数据同步、故障自动转移和高一致性,适用于对高可用性要求高的生产环境(如金融、电商等)。本方案基于Ubuntu系统(推荐22.04及以上版本),采用3节点部署(最小高可用配置),使用rsync作为状态快照传输(SST)方法。
sudo权限,能通过SSH互相访问。在所有节点执行以下命令,安装MariaDB Server及客户端:
sudo apt update && sudo apt upgrade -y # 更新系统包 sudo apt install mariadb-server mariadb-client -y # 安装MariaDB  在每个节点的/etc/mysql/mariadb.conf.d/目录下创建99-cluster.cnf文件(避免与默认配置冲突):
sudo nano /etc/mysql/mariadb.conf.d/99-cluster.cnf  添加以下内容(需替换为实际节点IP):
[mysqld] # 基础配置 bind-address = 0.0.0.0 # 允许远程访问 default-storage-engine = InnoDB # 使用InnoDB引擎(Galera仅支持InnoDB) innodb_autoinc_lock_mode = 2 # 解决自增ID冲突 binlog_format = ROW # 行级复制(保证数据一致性) # Galera集群配置 wsrep_on = ON # 开启Galera功能 wsrep_provider = /usr/lib/galera/libgalera_smm.so # Galera驱动路径(Ubuntu默认路径) wsrep_cluster_name = "ubuntu_mariadb_cluster" # 集群唯一名称(所有节点必须一致) wsrep_cluster_address = "gcomm://192.168.1.101,192.168.1.102,192.168.1.103" # 所有节点IP列表(初始化时用) wsrep_node_address = "192.168.1.101" # 当前节点IP(需与服务器实际IP一致) wsrep_node_name = "node1" # 当前节点名称(自定义,如node1/node2/node3) wsrep_sst_method = rsync # 状态快照传输方法(可选rsync/xtrabackup-v2,rsync更简单) wsrep_sst_auth = sst_user:sst_password # SST用户及密码(用于数据同步,需提前创建)  为保证数据同步安全,创建专用SST用户(仅在第一个节点执行):
mysql -u root -p  在MySQL shell中执行:
CREATE USER 'sst_user'@'%' IDENTIFIED BY 'sst_password'; -- 创建用户 GRANT RELOAD, LOCK TABLES, PROCESS, REPLICATION CLIENT ON *.* TO 'sst_user'@'%'; -- 授权 FLUSH PRIVILEGES; -- 刷新权限 EXIT;  在第一个节点(如192.168.1.101)上执行以下命令,初始化集群:
sudo systemctl stop mariadb # 停止MariaDB服务(若已启动) galera_new_cluster # 初始化集群(生成集群UUID) sudo systemctl start mariadb # 启动MariaDB服务  在第二个节点(如192.168.1.102)和第三个节点(如192.168.1.103)上执行以下命令,加入集群:
sudo systemctl restart mariadb # 重启MariaDB服务(会自动连接集群)  在任意节点上执行以下命令,检查集群是否正常运行:
mysql -u root -p -e "SHOW STATUS LIKE 'wsrep_cluster_size';"  若输出结果中wsrep_cluster_size的值等于节点数量(如3),则表示集群部署成功。
安装HAProxy并配置负载均衡,将请求分发到各个MariaDB节点:
sudo apt install haproxy -y # 安装HAProxy  编辑HAProxy配置文件(/etc/haproxy/haproxy.cfg),添加以下内容:
frontend mysql_front bind 192.168.1.200:3306 # HAProxy监听IP(负载均衡器IP) default_backend mysql_back backend mysql_back balance roundrobin # 轮询算法 server node1 192.168.1.101:3306 check # 节点1 server node2 192.168.1.102:3306 check # 节点2 server node3 192.168.1.103:3306 check # 节点3  重启HAProxy:
sudo systemctl restart haproxy  此后,应用程序可通过192.168.1.200:3306访问MariaDB集群。
Prometheus+Granafa监控集群状态(如节点存活、QPS、延迟);/var/log/mysql/error.log(MariaDB错误日志)和/var/log/syslog(系统日志),及时排查问题。galera_new_cluster命令);通过以上步骤,可在Ubuntu系统上快速部署高可用的MariaDB Galera Cluster,满足企业级生产环境的需求。