在 Ubuntu 上使用 MariaDB Galera 搭建多主集群
一 架构与准备
二 安装与基础安全
sudo apt update && sudo apt install -y mariadb-server mariadb-client rsyncsudo mysql_secure_installation三 集群配置
[mysqld] 段配置 Galera 关键参数(以下为最小可用示例,按节点替换实际值):
/etc/mysql/mariadb.conf.d/50-server.cnf 或 /etc/mysql/conf.d/galera.cnf[mysqld]
bind-address = 0.0.0.0
# Galera 核心
wsrep_on = ON
wsrep_provider = /usr/lib/galera/libgalera_smm.so
wsrep_cluster_name = galera_cluster
wsrep_cluster_address = gcomm://10.0.0.11,10.0.0.12,10.0.0.13
wsrep_node_address = 10.0.0.11
wsrep_node_name = node1
# 复制与存储引擎
binlog_format = row
default_storage_engine = InnoDB
innodb_autoinc_lock_mode = 2
innodb_flush_log_at_trx_commit = 2
# 状态快照传输(SST)
wsrep_sst_method = xtrabackup-v2
wsrep_sst_auth = sst_user:sst_password
wsrep_cluster_address 使用 gcomm:// 协议列出所有节点 IP。wsrep_sst_method=xtrabackup-v2 依赖 Percona XtraBackup,需在各节点安装 percona-xtrabackup;若未安装,可临时改用 rsync(性能与安全略逊)。四 初始化与加入集群
sudo systemctl stop mariadbsudo galera_new_clustermysql -u root -p
CREATE USER 'sst_user'@'%' IDENTIFIED BY 'sst_password';
GRANT ALL PRIVILEGES ON *.* TO 'sst_user'@'%';
FLUSH PRIVILEGES;
EXIT;
sudo systemctl start mariadbmysql -u root -p -e "SHOW STATUS LIKE 'wsrep_cluster_size';"
mysql -u root -p -e "SHOW STATUS LIKE 'wsrep_ready';"
五 验证与运维要点
galera_new_cluster 引导,其余节点随后启动加入。wsrep_cluster_size、wsrep_ready、wsrep_local_state_comment 等关键状态变量。