192.168.1.101、192.168.1.102、192.168.1.103),并能通过SSH互相访问。sudo apt update && sudo apt upgrade -y
ufw或iptables配置防火墙规则。在所有节点上执行以下命令,安装MariaDB Server及依赖(Galera组件已集成在MariaDB 10.1及以上版本中):
sudo apt install mariadb-server mariadb-client -y
安装完成后,运行安全加固脚本,设置root密码、移除匿名用户、禁止root远程登录等:
sudo mysql_secure_installation
在每个节点的/etc/mysql/conf.d/目录下创建galera.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 # 使用ROW格式二进制日志(Galera要求)
# 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://192.168.1.101,192.168.1.102,192.168.1.103" # 集群节点地址列表(初始为空,用于第一个节点初始化)
wsrep_sst_method = rsync # 状态快照传输方法(可选rsync/xtrabackup,rsync性能较好但需关闭防火墙)
wsrep_node_address = "192.168.1.101" # 当前节点IP地址(每个节点需唯一)
wsrep_node_name = "node1" # 当前节点名称(每个节点需唯一,如node1/node2/node3)
注意:
wsrep_cluster_address在第一个节点初始化时需设置为gcomm://(空集群),后续节点加入时再改为完整节点列表。
在每个节点上执行以下命令,检查MariaDB配置文件语法是否正确:
sudo mysql --help | grep "my.cnf" # 查看配置文件加载路径
sudo mysqld --validate-config # 验证配置文件语法(Ubuntu 22.04+)
在第一个节点(如192.168.1.101)上,停止MariaDB服务并初始化集群:
sudo systemctl stop mariadb # 停止MariaDB服务
galera_new_cluster # 初始化集群(生成集群UUID并启动第一个节点)
初始化完成后,启动MariaDB服务:
sudo systemctl start mariadb
在其他节点(如192.168.1.102、192.168.1.103)上,修改galera.cnf文件中的wsrep_cluster_address为完整节点列表(包含所有节点IP):
wsrep_cluster_address = "gcomm://192.168.1.101,192.168.1.102,192.168.1.103"
然后重启MariaDB服务,使节点加入集群:
sudo systemctl restart mariadb
在任意节点上,登录MariaDB并执行以下命令,检查集群状态:
mysql -u root -p -e "SHOW STATUS LIKE 'wsrep%';"
重点关注以下指标,确认集群正常运行:
wsrep_cluster_size:集群节点数量(应等于实际节点数,如3);wsrep_cluster_status:集群状态(应为Primary,表示集群健康);wsrep_ready:节点是否准备好接收请求(应为ON)。ALTER USER 'root'@'localhost' IDENTIFIED BY 'StrongPassword';REVOKE ALL PRIVILEGES ON *.* FROM 'root'@'%'; GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost'; FLUSH PRIVILEGES;使用HAProxy或Nginx作为负载均衡器,将请求分发到各个MariaDB节点,提高集群可用性。以HAProxy为例,配置步骤如下:
sudo apt install haproxy -y # 安装HAProxy
sudo nano /etc/haproxy/haproxy.cfg # 编辑配置文件
添加以下内容(替换为节点IP地址):
frontend mysql_front
bind 192.168.1.200:3306 # 负载均衡器IP地址
default_backend mysql_back
backend mysql_back
balance roundrobin # 轮询算法
server node1 192.168.1.101:3306 check
server node2 192.168.1.102:3306 check
server node3 192.168.1.103:3306 check
重启HAProxy服务:
sudo systemctl restart haproxy
wsrep_sync_wait参数。mysqldump或xtrabackup),防止数据丢失。Prometheus+Granafa或Zabbix监控集群状态(如节点存活、复制延迟、磁盘空间等),及时发现并解决问题。