温馨提示×

MariaDB在Linux上的集群方案

小樊
38
2025-11-30 15:30:00
栏目: 云计算

MariaDB 在 Linux 上的集群方案与选型

一、常见方案与适用场景

  • Galera Cluster 多主同步:基于 wsrep 的同步多主复制,任意节点可读写,自动成员管理与故障剔除,适合需要高可用与就近写入的业务;建议至少 3 个节点(奇数) 以避免脑裂。典型端口:33064567(Galera)、4568(IST)、4444(SST)。
  • 主从复制(异步/半同步):一主多从或级联复制,部署简单、读写分离容易,写入单点;适合读多写少、对一致性要求可放宽到最终一致的业务。
  • DRBD + Pacemaker + Corosync 双机 HA:共享块存储(DRBD)配合资源代理,实现 VIP 漂移与自动故障切换;适合双机且要求强一致/快速切换的场景(如传统机房)。
  • 云上场景:可用云厂商 内部/外部负载均衡 配合数据库集群(如 Galera 或主从),在公有云上替代传统 VIP 的漂移思路。

二、快速对比

方案 拓扑与写入 一致性 节点数建议 主要优点 主要限制
Galera Cluster 多主,任意节点写入 同步(几乎) 3(奇数) 自动故障剔除/加入、读可扩展 写入受跨节点通信影响,表需主键,仅 InnoDB
主从复制 一主多从 最终一致(可半同步) 2 简单、成本低、易读写分离 主单点,故障切换需额外机制
DRBD + Pacemaker + Corosync 双机共享块设备 强一致(块级) 2 切换快、数据强一致 架构复杂,双机边界,扩容不便

三、关键配置要点

  • Galera 最小配置示例(/etc/mysql/mariadb.conf.d/50-server.cnf 或 /etc/my.cnf.d/server.cnf)

    • 核心参数:
      • wsrep_on=ON
      • wsrep_provider=/usr/lib/galera/libgalera_smm.so(或 /usr/lib64/galera/libgalera_smm.so
      • wsrep_cluster_name=my_cluster
      • wsrep_cluster_address=“gcomm://10.0.0.11,10.0.0.12,10.0.0.13”
      • wsrep_node_name=node1;wsrep_node_address=10.0.0.11
      • binlog_format=ROW;default_storage_engine=InnoDB;innodb_autoinc_lock_mode=2
      • wsrep_sst_method=rsync(或 xtrabackup-v2);如用 xtrabackup-v2,需配置 wsrep_sst_auth
    • 典型要点:SST 方式选择影响首次加入速度与一致性;xtrabackup-v2 需要为 SST 创建专用账号;bind-address 设为 0.0.0.0 以允许节点互联。
  • 主从复制关键步骤

    • 主库:启用二进制日志(server_id、log_bin),创建复制账号并授予 REPLICATION SLAVE;记录 File/Position
    • 从库:CHANGE MASTER TO 指向主库,指定 File/Position;START SLAVE;验证 Slave_IO_Running/Slave_SQL_Running 为 Yes。
  • DRBD + Pacemaker + Corosync 要点

    • DRBD 创建复制资源(如 /dev/drbd0),主备角色切换;MariaDB 数据目录指向 DRBD 挂载点(如 /data/mysql)。
    • Pacemaker 定义资源:IPaddr(VIP)、Filesystem(挂载 DRBD)、lsb:mysqld(或 ocf:heartbeat:mysqld)、以及 ocf:linbit:drbd 主从资源与克隆;设置 stonith-enabled=falseno-quorum-policy=ignore(双机场景常见做法)。

四、部署与验证步骤

  • Galera 三节点最小落地

    1. 所有节点安装 MariaDB 与 Galera 组件;配置 wsrep 参数(cluster_name、cluster_address、node_name/address、SST 方法)。
    2. 第一个节点初始化:执行 galera_new_cluster;其余节点启动 MariaDB 服务自动加入。
    3. 验证:SHOW STATUS LIKE ‘wsrep_cluster_size’; 期望值为 3;检查各节点 wsrep_ready=ON
    4. 防火墙放行:3306/4567/4568/4444
  • 主从复制验证

    1. 主库创建库表并插入数据;从库执行 START SLAVE 后,查询从库是否一致。
    2. 使用 SHOW SLAVE STATUS\G 检查 Seconds_Behind_Master、IO/SQL 线程状态。
  • DRBD + Pacemaker 验证

    1. 检查 DRBD 状态:cat /proc/drbd(应为 UpToDate/Primary 等);
    2. 资源检查:crm status 查看 VIP、Filesystem、mysqld、drbd 资源状态与角色;
    3. 故障演练:停止主库或断开网络,确认 VIP 漂移服务在备机拉起

五、运维与故障处理要点

  • 脑裂与异常恢复:Galera 两节点网络抖动易脑裂;处理思路为清理节点本地状态后重引导集群(删除 /var/lib/mysql/grastate.dat、galera.cache,必要时使用 –wsrep-new-cluster 引导首节点,再启动其他节点)。
  • SST 与账号:选择 xtrabackup-v2 时,提前创建 SST 用户并配置 wsrep_sst_auth;首次全量同步时间与数据量、网络带宽相关。
  • 云上负载均衡:在公有云使用 内部/外部负载均衡3306 转发至后端数据库节点,实现读写入口统一与故障节点摘除(替代传统 VIP 漂移)。

0