一、准备工作
ssh-keygen和ssh-copy-id配置)。ping和traceroute检测)。二、安装MariaDB基础组件 在所有节点执行以下操作:
sudo apt update && sudo apt upgrade -y(Ubuntu)或sudo yum update -y(CentOS)。sudo apt install mariadb-server mariadb-client -y(Ubuntu)或sudo yum install mariadb-server mariadb-client -y(CentOS)。sudo mysql_secure_installation,设置root密码、移除匿名用户、禁止root远程登录、删除测试数据库。三、配置MariaDB集群参数
在所有节点编辑MariaDB配置文件(路径因发行版而异,Ubuntu通常为/etc/mysql/mariadb.conf.d/99-cluster.cnf,CentOS为/etc/my.cnf.d/galera.cnf),添加以下核心配置:
[mysqld]
# 基础配置
bind-address = 0.0.0.0 # 允许远程访问
default-storage-engine = InnoDB # 使用InnoDB引擎(Galera仅支持InnoDB)
innodb_autoinc_lock_mode = 2 # 解决自增ID冲突
character-set-server = utf8mb4 # 设置字符集
collation-server = utf8mb4_general_ci
# Galera集群配置
wsrep_on = ON # 开启Galera功能
wsrep_provider = /usr/lib/galera/libgalera_smm.so # Galera Provider路径(Ubuntu/CentOS路径可能不同)
wsrep_cluster_name = "galera_cluster" # 集群名称(所有节点必须一致)
wsrep_cluster_address = "gcomm://node1-ip,node2-ip,node3-ip" # 集群节点地址列表(初始为空,用于第一个节点初始化)
wsrep_node_address = "当前节点IP" # 当前节点IP地址
wsrep_node_name = "node1" # 当前节点名称(需唯一,如node1/node2/node3)
wsrep_sst_method = rsync # 数据同步方法(可选rsync/xtrabackup-v2,xtrabackup更安全)
wsrep_sst_auth = sst_user:password # SST用户及密码(用于数据同步授权,需提前创建)
注:
wsrep_cluster_address在第一个节点初始化时需设为gcomm://(空集群),后续节点加入时再改为完整节点列表。
四、初始化集群
sudo systemctl stop mariadb),执行初始化命令生成集群:sudo galera_new_cluster
启动MariaDB服务:sudo systemctl start mariadb。mysql -u root -p -e "SHOW STATUS LIKE 'wsrep_cluster_size';"
若wsrep_cluster_size值为1,说明第一个节点初始化成功。wsrep_cluster_address为完整节点列表(如gcomm://node1-ip,node2-ip,node3-ip),重启MariaDB服务:sudo systemctl restart mariadb
重启后节点会自动加入集群。五、验证集群状态 在任意节点登录MySQL,执行以下命令:
mysql -u root -p -e "SHOW STATUS LIKE 'wsrep_cluster_size';"
mysql -u root -p -e "SHOW STATUS LIKE 'wsrep_ready';"
mysql -u root -p -e "SHOW STATUS LIKE 'wsrep_connected';"
wsrep_cluster_size应等于节点总数(如3);wsrep_ready和wsrep_connected应为ON,表示节点正常连接集群。六、可选配置(增强集群可用性)
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.11:3306 check
server node2 192.168.1.12:3306 check
server node3 192.168.1.13:3306 check
重启HAProxy:sudo systemctl restart haproxy,后续应用可通过负载均衡器IP访问集群。xtrabackup-v2作为同步方法,需提前创建专用用户:mysql -u root -p -e "CREATE USER 'sst_user'@'%' IDENTIFIED BY 'strong_password';"
mysql -u root -p -e "GRANT RELOAD, LOCK TABLES, PROCESS, REPLICATION CLIENT ON *.* TO 'sst_user'@'%';"
mysql -u root -p -e "FLUSH PRIVILEGES;"
并在配置文件中更新wsrep_sst_auth为sst_user:strong_password。