Ubuntu环境下搭建MariaDB Galera Cluster实战流程
在所有节点上执行以下命令,安装MariaDB及依赖:
sudo apt update && sudo apt upgrade -y # 更新系统包
sudo apt install mariadb-server mariadb-client -y # 安装MariaDB
安装完成后,通过mysql --version确认安装版本。
在每个节点的/etc/mysql/conf.d/目录下新建galera.cnf(避免覆盖默认配置),添加以下内容(需替换为实际节点IP):
[mysqld]
# 基础配置
binlog_format=ROW # 必须为ROW格式,保证数据同步一致性
default-storage-engine=InnoDB # 推荐使用InnoDB引擎(支持事务)
innodb_autoinc_lock_mode=2 # 解决多主插入时的自增ID冲突
bind-address=0.0.0.0 # 允许远程访问
# 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地址(如192.168.1.111)
wsrep_node_name="node1" # 当前节点名称(如node1,需唯一标识)
wsrep_sst_method=rsync # 数据同步方法(可选rsync/xtrabackup-v2,xtrabackup性能更好但需额外安装)
注意:
wsrep_cluster_address在首次初始化时需包含所有节点IP,后续加入节点时可简化为gcomm://(由集群自动发现其他节点)。
sudo systemctl stop mariadb
node1)作为初始节点,执行:galera_new_cluster
此命令会启动集群并生成集群UUID(后续节点需加入该集群)。node2、node3等节点执行:sudo systemctl start mariadb
节点会自动连接至node1所在的集群。在任意节点上登录MySQL,执行以下命令查看集群状态:
mysql -u root -p -e "SHOW STATUS LIKE 'wsrep_cluster_size';"
若输出结果中wsrep_cluster_size的值等于节点数量(如3),则说明集群搭建成功。
sudo mysql_secure_installation,按提示设置root密码、移除匿名用户、禁止root远程登录等。CREATE USER 'sst_user'@'%' IDENTIFIED BY 'strong_password';
GRANT RELOAD, LOCK TABLES, PROCESS, REPLICATION CLIENT ON *.* TO 'sst_user'@'%';
FLUSH PRIVILEGES;
然后在galera.cnf中添加wsrep_sst_auth=sst_user:strong_password(替换为实际用户名密码)。为避免单点故障,可部署HAProxy或Nginx作为负载均衡器,将请求分发至各个MariaDB节点。以HAProxy为例:
sudo apt install haproxy -y/etc/haproxy/haproxy.cfg,添加以下内容:frontend mysql_front
bind 192.168.1.100:3306 # 负载均衡器IP
default_backend mysql_back
backend mysql_back
balance roundrobin # 轮询算法
server node1 192.168.1.111:3306 check # 节点1
server node2 192.168.1.112:3306 check # 节点2
server node3 192.168.1.113:3306 check # 节点3
sudo systemctl restart haproxyPrometheus+Granafa监控集群状态,定期通过mysqldump或xtrabackup备份数据。