温馨提示×

Ubuntu MariaDB集群搭建流程怎样

小樊
40
2025-12-24 12:23:59
栏目: 云计算

Ubuntu MariaDB Galera 集群搭建流程

一 架构与准备

  • 采用 MariaDB Galera Cluster 实现 多主同步复制(Active-Active),推荐至少 3 个节点,这是最小可配置且具备容错能力的规模。
  • 准备事项:各节点配置 静态 IP、启用 sudo 权限账户、系统更新;建议在同一 私有网络/VPC 内部署,降低网络时延与暴露面。
  • 端口与连通性:开放 3306(MySQL)4567(Galera 通信)4568(IST 增量状态传输)4444(SST 全量状态传输);确保节点间可互通。

二 安装与基础安全

  • 在所有节点安装 MariaDB(Ubuntu 22.04/20.04 通常仓库自带;如需指定版本或官方仓库,可先导入 GPG 并添加 MariaDB 仓库后再安装):
    • 更新索引并安装:sudo apt update && sudo apt install -y mariadb-server mariadb-client
    • 可选:导入密钥与仓库(示例为 10.1,实际请选择与你系统匹配的版本与仓库)
      sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xF1656F24C74CD1D8
      sudo add-apt-repository 'deb [arch=amd64] http://ftp.utexas.edu/mariadb/repo/10.1/ubuntu $(lsb_release -sc) main'
      sudo apt update && sudo apt install -y mariadb-server mariadb-client
  • 运行安全初始化:sudo mysql_secure_installation(设置 root 密码、移除匿名用户、禁止远程 root 登录、删除测试库等)。

三 集群配置

  • 创建 Galera 配置文件(各节点一份,路径可为:/etc/mysql/conf.d/galera.cnf/etc/mysql/mariadb.conf.d/50-server.cnf 的 [mysqld] 段加入 Galera 参数):
    • 建议将通用参数写入 [galera] 段,节点私有参数(如节点地址/名称)写入 [mysqld] 段。
    • 示例关键参数(按节点替换实际值):
      [mysqld]
      bind-address = 0.0.0.0
      binlog_format = ROW
      default_storage_engine = InnoDB
      innodb_autoinc_lock_mode = 2
      innodb_flush_log_at_trx_commit = 2
      wsrep_on = ON
      
      [galera]
      wsrep_provider = /usr/lib/galera/libgalera_smm.so
      wsrep_cluster_name = "galera_cluster"
      wsrep_cluster_address = "gcomm://192.168.100.11,192.168.100.12,192.168.100.13"
      wsrep_node_address = "192.168.100.11"   # 本节点 IP
      wsrep_node_name = "node1"             # 本节点名称
      wsrep_sst_method = xtrabackup-v2      # 或 rsync(注意 rsync 对业务有短暂锁表)
      wsrep_sst_auth = "sst_user:sst_password"
      
    • 说明:
      • wsrep_provider 路径在不同发行包/架构可能为 /usr/lib/galera/libgalera_smm.so/usr/lib64/galera/libgalera_smm.so
      • 生产环境优先 xtrabackup-v2(SST 不阻塞写入),rsync 配置简单但会在传输阶段影响业务写入。

四 初始化与加入集群

  • 第 1 步:所有节点停止 MariaDB
    sudo systemctl stop mariadb
  • 第 2 步:在第一个节点初始化集群
    sudo galera_new_cluster
  • 第 3 步:在其他节点启动并自动加入
    sudo systemctl start mariadb
  • 第 4 步:创建 SST 认证用户(在任一节点执行一次即可,Galera 会同步权限)
    sudo mysql -u root -p -e "CREATE USER 'sst_user'@'%' IDENTIFIED BY 'sst_password'; GRANT ALL PRIVILEGES ON *.* TO 'sst_user'@'%'; FLUSH PRIVILEGES;"
  • 第 5 步:验证集群状态(在任意节点)
    mysql -u root -p -e "SHOW STATUS LIKE 'wsrep_cluster_size';"
    若返回 wsrep_cluster_size=3,表示 3 节点已成功组成集群。

五 验证与运维要点

  • 常用检查命令:
    • 集群规模:SHOW STATUS LIKE 'wsrep_cluster_size';
    • 本节点是否为主写节点:SHOW STATUS LIKE 'wsrep_ready';(值为 ON 表示可写)
    • 集群成员列表:SHOW STATUS LIKE 'wsrep_incoming_addresses';
    • 复制健康:SHOW STATUS LIKE 'wsrep_local_state_comment';(通常为 Synced
  • 防火墙与安全组:放行 3306/4567/4568/4444;生产环境建议仅内网开放,限制来源网段。
  • 重要提示:
    • Galera 为 同步多主,并非分片方案,写入冲突需应用层处理(如按主键/分库分表规避热点)。
    • 谨慎变更 wsrep_cluster_address;节点变更顺序建议先摘除、变更、再重新加入。
    • SST 选择:优先 xtrabackup-v2;使用 rsync 时预期会有短暂锁表窗口。
    • 备份:定期做物理/逻辑备份(如 mariabackup),并演练恢复流程。

0