Ubuntu环境下搭建MariaDB Galera集群的详细步骤
在所有节点上执行以下命令安装MariaDB Server及客户端:
sudo apt update && sudo apt upgrade -y # 更新系统软件包
sudo apt install mariadb-server mariadb-client -y # 安装MariaDB
安装完成后,运行安全加固脚本设置root密码及基础安全策略:
sudo mysql_secure_installation
在每个节点上创建/修改Galera配置文件(路径通常为/etc/mysql/conf.d/galera.cnf
或/etc/mysql/mariadb.conf.d/99-cluster.cnf
),添加以下内容(替换为实际节点IP):
[mysqld]
# 基础配置
bind-address = 0.0.0.0 # 允许远程连接
default-storage-engine = InnoDB # 使用InnoDB存储引擎(Galera要求)
innodb_autoinc_lock_mode = 2 # 解决自增ID冲突
binlog_format = ROW # 推荐ROW格式(保证数据一致性)
# Galera集群配置
wsrep_on = ON # 开启Galera功能
wsrep_provider = /usr/lib/galera/libgalera_smm.so # Galera provider路径(Ubuntu默认路径)
wsrep_cluster_name = "galera_cluster" # 集群名称(所有节点必须一致)
wsrep_cluster_address = "gcomm://node1-ip,node2-ip,node3-ip" # 集群节点地址列表(初始节点用此格式)
wsrep_node_address = "当前节点IP" # 当前节点的实际IP
wsrep_node_name = "node1" # 当前节点名称(自定义,需唯一)
wsrep_sst_method = rsync # 数据同步方法(可选rsync/xtrabackup-v2,xtrabackup更安全)
注:
wsrep_cluster_address
在初始节点填写所有节点IP,后续加入节点需修改为现有集群地址(如gcomm://existing-node-ip
)。
sudo systemctl stop mariadb
node1
)作为初始节点,执行:galera_new_cluster
此命令会启动集群并初始化Galera状态。node2
、node3
等节点执行:sudo systemctl start mariadb
这些节点会自动连接到初始节点并加入集群。在任意节点上登录MySQL,执行以下命令查看集群状态:
mysql -u root -p -e "SHOW STATUS LIKE 'wsrep_cluster_size';"
若输出结果中wsrep_cluster_size
的值等于节点数量(如3),则说明集群搭建成功。
为避免单点故障,可通过HAProxy实现负载均衡,将请求分发到各个MariaDB节点:
sudo apt install haproxy -y
/etc/haproxy/haproxy.cfg
,添加以下内容(替换为节点IP):frontend mysql_front
bind 192.168.1.2:3306 # HAProxy监听地址
default_backend mysql_back
backend mysql_back
balance roundrobin # 轮询算法
server node1 192.168.1.3:3306 check # 节点1
server node2 192.168.1.4:3306 check # 节点2
server node3 192.168.1.5:3306 check # 节点3
sudo systemctl restart haproxy
此时,可通过HAProxy的IP(如192.168.1.2
)访问MariaDB集群。ufw
)允许3306、4567等端口通信。Prometheus+Granafa
或Zabbix
监控集群状态,定期检查/var/log/mysql/error.log
日志。mysqldump
或xtrabackup
备份数据,防止数据丢失。innodb_buffer_pool_size
、max_connections
等参数,提升集群性能。