温馨提示×

如何保障Linux SQLAdmin高可用

小樊
32
2025-12-27 15:16:38
栏目: 云计算

Linux 上 SQLAdmin 高可用落地方案

一 架构总览与前提

  • SQLAdmin 定位为无状态的管理前端,前端至少部署 2 台节点,通过 Nginx/HAProxyL4/L7 负载均衡与健康检查,必要时叠加 Keepalived VIP 提供单一入口。
  • 数据库层使用 MySQL 主从复制 或更高级的 InnoDB Cluster/MGR、Galera/PXC、NDB Cluster 等,SQLAdmin 只负责接入与健康探测,不直接承担数据一致性。
  • 建议开放端口:80/443(SQLAdmin Web)3306(MySQL,仅内网/VIP)8443/10000(Keepalived VRRP,可选);系统与组件建议:CentOS 7/8 或 Ubuntu 20.04+,已配置 EPEL/官方仓库,并启用 firewalld/SELinux 的最小放行策略。

二 数据库层高可用选型与要点

  • 主从复制(入门与通用)
    • 主库:开启 log_bin 与唯一 server-id;从库:配置 relay_logread_only=1;创建复制账号并初始化复制,确保 Slave_IO_Running/Slave_SQL_Running=Yes
  • InnoDB Cluster / Group Replication(官方高可用)
    • 基于组复制实现自动故障转移强一致,SQLAdmin 通过 LB/VIP 接入集群任一节点即可。
  • Galera Cluster / Percona XtraDB Cluster / MariaDB Galera(多主同步)
    • 多主可写、一致性高,SQLAdmin 可均衡访问所有节点。
  • NDB Cluster(分布式内存集群)
    • 管理节点/数据节点/SQL 节点 组成,适合高并发与高可用场景,SQLAdmin 指向多个 SQL 节点并通过 LB 保障接入可用性。

三 SQLAdmin 前端高可用部署步骤

  • 多实例部署
    • 在两台或多台前端部署 SQLAdmin(如 phpMyAdmin 或 Adminer),使用 httpd/php-fpm 或等效栈,确保目录与配置一致,便于水平扩展。
  • 负载均衡与健康检查
    • Nginx 示例(HTTP 接入):
      • upstream:列出所有 SQLAdmin 节点;配置 max_fails/fail_timeout 与被动健康检查;启用 keepalive 复用连接。
      • server:监听 80/443,TLS 终止,反向代理到 upstream。
    • 如需直接代理数据库管理端口(不推荐生产):可用 Nginx stream 模块对 3306 做 TCP 转发与健康检查。
  • VIP 与故障转移(可选)
    • 两台前端部署 Keepalived,配置 VRRP 实例绑定 VIP(如 192.168.1.100)state 一主一备、priority 不同;通过 vrrp_script 对本地 80/443 做 HTTP 探活,失败则降低权重触发漂移。
  • 安全加固
    • 仅内网/VIP 访问 3306;为 VIP/HTTP 启用 TLS/HTTPS;SQLAdmin 管理账号最小权限强口令;按需开启 SELinux/firewalld 并仅放行必要端口。

四 验证 监控 与运维

  • 故障演练与验证
    • 停止主库或断开其网络,确认 VIP 漂移、负载均衡剔除故障节点、SQLAdmin 仍可通过 VIP 访问后端;在 SQLAdmin 中验证写主读从与复制方向正确。
  • 日志与监控
    • 持续收集与告警:Keepalived(/var/log/messages、journalctl -u keepalived)Nginx(access/error)SQLAdmin/phpMyAdmin(应用日志)MySQL(错误日志、复制状态 SHOW SLAVE STATUS\G)
    • 建议接入 Prometheus + Grafana,采集系统/数据库指标并配置阈值告警。
  • 备份与恢复
    • 定期执行 全量/增量备份(如 mysqldump 或物理备份),并进行周期性恢复演练验证可用性与 RPO/RTO。

五 可选增强与常见陷阱

  • 读写分离与中间件
    • 引入 MySQL Router/ProxySQL 实现读写分离与更细粒度健康检查;SQLAdmin 指向中间件地址,由中间件将写路由到主、读路由到从。
  • 多因素认证与审计
    • 为 SQLAdmin 增加 MFAIP 白名单操作审计,提升安全合规能力。
  • 常见陷阱与规避
    • SQLAdmin 会话粘滞在单实例 上,导致故障时切换不透明;建议保持无状态并依赖 LB 健康检查VIP 漂移
    • 直接暴露 3306 到公网;应通过 内网/VIP 访问,并启用 TLS
    • 健康检查过于宽松或缺失,导致故障节点未被及时剔除;务必配置 主动/被动检查超时/重试

0