温馨提示×

Debian MariaDB集群部署方案探讨

小樊
38
2025-12-07 04:42:04
栏目: 云计算

Debian 上 MariaDB 集群部署方案

一、方案选型与适用场景

  • MariaDB Galera Cluster(多主同步复制)
    • 特性:真正多主同步复制自动节点管理新节点自动同步并行复制(行级),适合对一致性与高可用要求高的在线业务。
    • 代价:写冲突需应用侧规避;网络抖动时可能产生流控;容量与性能主要受网络与磁盘 IO 限制。
  • 主从复制 + 高可用代理(读写分离/故障切换)
    • 特性:架构简单、成熟稳定、易于横向扩展读能力;主库单点需通过 VIP/Keepalived/HAProxy 或 Orchestrator 等实现故障转移。
    • 代价:异步或半同步存在复制延迟/数据丢失风险;需维护复制拓扑与切换流程。

二、Galera 多主集群部署步骤(Debian 12 示例)

  • 环境与版本
    • 建议至少 3 节点(避免脑裂,提升容错);Debian 12 Bookworm;MariaDB 10.11 LTS;包:mariadb-server、mariadb-client、galera-4
  • 安装与基础配置
    • 安装:apt update && apt install -y mariadb-server mariadb-client galera-4
    • 基础优化(/etc/mysql/mariadb.conf.d/50-server.cnf):
      • bind-address = 0.0.0.0skip-name-resolve
      • max_connections = 10000(按业务调整)
  • Galera 配置(/etc/mysql/conf.d/galera.cnf,所有节点)
    • 核心参数示例:
      • wsrep_on=ON
      • wsrep_provider=/usr/lib/galera/libgalera_smm.so
      • wsrep_cluster_name="galera_prod"
      • wsrep_cluster_address="gcomm://192.168.100.111,192.168.100.112,192.168.100.113"
      • wsrep_sst_method=rsync(或 mariabackup,需安装相应工具)
      • wsrep_node_address=<本机IP>wsrep_node_name=<本机名>
      • InnoDB 行复制:binlog_format=ROWdefault-storage-engine=InnoDBinnodb_autoinc_lock_mode=2
  • 启动与引导
    • 首次引导:选择一个节点以引导方式启动
      • systemctl stop mariadb
      • galera_new_cluster(或 service mariadb start --wsrep-new-cluster
    • 其余节点:systemctl start mariadb
    • 验证:mysql -e "SHOW STATUS LIKE 'wsrep_cluster_size';" 应等于节点数
  • 维护账户一致性(Debian 系常见)
    • 将首个节点的 /etc/mysql/debian.cnf 同步到其余节点,确保 debian-sys-maint 密码一致,避免日志轮转等维护失败
  • 防火墙放通
    • 开放端口:3306/TCP(MySQL)、4567/TCP+UDP(复制流量)、4568/TCP(IST)、4444/TCP(SST)

三、高可用接入与运维要点

  • 接入方式
    • 直连各节点(应用具备重试/幂等)或在前端部署 HAProxy/Keepalived 提供 VIP 与读写分离/故障切换;也可使用 Nginx Stream 做四层转发。
  • 扩缩容
    • 扩容:新节点安装相同版本与配置,加入 wsrep_cluster_address 后启动,自动完成 SST 同步;缩容:先迁移业务,再下线节点。
  • SST 与备份
    • wsrep_sst_method=rsync 部署简单;生产建议 mariabackup(支持增量、一致性热备),并定期做 物理/逻辑备份 与恢复演练。
  • 脑裂与恢复
    • 断电/异常后,检查 /var/lib/mysql/grastate.datsafe_to_bootstrap 标记;仅当唯一节点标记为 1 时再引导该节点,其余节点正常启动加入。
  • 监控与告警
    • 关键指标:wsrep_cluster_size、wsrep_ready、wsrep_connected、wsrep_local_state_comment、Threads_connected、Innodb_row_lock_time_avg 等;配合 慢查询日志复制延迟 告警。

四、主从复制 + 高可用代理方案(简要)

  • 拓扑与组件
    • 1 主 2 从1 主多从;前端 HAProxy/Keepalived 提供 VIP 与读写分离;可选 Orchestrator 做自动故障转移与一致性校验。
  • 部署要点
    • 主库开启 GTID 或基于位点复制;从库设置 read_only=1(管理账号除外);半同步提升一致性;定期校验复制一致性。
  • 适用场景
    • 读多写少、可接受异步/半同步延迟、需要快速横向扩展读能力的业务;主库故障通过 VIP 漂移Orchestrator 自动切换。

五、关键配置与排错清单

  • 必须配置
    • wsrep_on=ONwsrep_providerwsrep_cluster_addresswsrep_node_address/namebinlog_format=ROWdefault-storage-engine=InnoDBinnodb_autoinc_lock_mode=2bind-address=0.0.0.0
  • 常见故障
    • 维护账户失败:同步 /etc/mysql/debian.cnf 或在 mysql 中修正 debian-sys-maint 密码
    • 节点无法加入:检查 防火墙/SELinuxwsrep_cluster_address 一致性、SST 方法依赖(如 rsync/mariabackup)、磁盘空间与权限
    • 脑裂/启动异常:依据 grastate.datsafe_to_bootstrap 选择唯一引导节点,其余节点正常加入

0