温馨提示×

MariaDB在Ubuntu上的集群搭建方法是什么

小樊
34
2025-12-04 19:28:49
栏目: 云计算

在 Ubuntu 上使用 MariaDB Galera 搭建多主集群

一 架构与准备

  • 采用 MariaDB Galera Cluster 实现 多主(Active-Active) 同步复制,推荐至少 3 个节点,这是最小可配置且具备容错能力的规模。所有节点需使用 Ubuntu 16.04 及以上版本,MariaDB 10.1 及以上版本。为提升可靠性,建议使用 私有网络/VPC 互联,并配置 静态 IP。开放节点间通信端口:3306(MySQL)4567(Galera 通信)4568(IST 增量状态传输)4444(SST 全量状态传输)

二 安装与基础安全

  • 在所有节点安装 MariaDB(Ubuntu 20.04/22.04 通常可直接通过官方仓库安装):
    • 执行:sudo apt update && sudo apt install -y mariadb-server mariadb-client rsync
  • 运行安全初始化并加固:
    • 执行:sudo mysql_secure_installation
    • 建议设置 root 远程访问策略(仅在受控网络内开放),并移除匿名用户、测试库等。

三 集群配置

  • 统一在 [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(性能与安全略逊)。
      • 各节点分别设置唯一的 wsrep_node_namewsrep_node_address

四 初始化与加入集群

  • 第一步:停止所有节点数据库服务
    • 执行:sudo systemctl stop mariadb
  • 第二步:在第一个节点引导集群
    • 执行:sudo galera_new_cluster
    • 连接到数据库并创建 SST 认证用户(用于节点间数据同步):
      mysql -u root -p
      CREATE USER 'sst_user'@'%' IDENTIFIED BY 'sst_password';
      GRANT ALL PRIVILEGES ON *.* TO 'sst_user'@'%';
      FLUSH PRIVILEGES;
      EXIT;
      
  • 第三步:依次启动其余节点
    • 执行:sudo systemctl start mariadb
  • 第四步:验证集群状态
    • 在任意节点执行:
      mysql -u root -p -e "SHOW STATUS LIKE 'wsrep_cluster_size';"
      mysql -u root -p -e "SHOW STATUS LIKE 'wsrep_ready';"
      
    • 正常应看到 wsrep_cluster_size=3wsrep_ready=ON

五 验证与运维要点

  • 验证复制与会话一致性
    • 在各节点创建测试库表并插入数据,确认其他节点立即可见;验证应用可通过 任一节点 进行读写。
  • 防火墙与安全组
    • 确保节点间开放 3306/4567/4568/4444;仅允许可信网段访问数据库端口。
  • 常见运维
    • 扩容:新增节点使用相同配置,启动后会自动 SST 同步加入集群。
    • 全集群宕机恢复:选择 最后下线且数据最新的节点 执行 galera_new_cluster 引导,其余节点随后启动加入。
    • 监控:持续关注 wsrep_cluster_sizewsrep_readywsrep_local_state_comment 等关键状态变量。

0