首页主机资讯如何在CentOS上实现SQLAdmin的高可用性

如何在CentOS上实现SQLAdmin的高可用性

时间2025-12-02 16:13:03发布访客分类主机资讯浏览364
导读:在CentOS上实现 SQLAdmin 的高可用 架构总览 将SQLAdmin定位为无状态的管理前端,通过Nginx/Keepalived提供VIP与L4/L7负载均衡,后端对接至少2台数据库节点(MySQL 主从或集群)。 数据库层负责...

在CentOS上实现 SQLAdmin 的高可用

架构总览

  • SQLAdmin定位为无状态的管理前端,通过Nginx/Keepalived提供VIPL4/L7负载均衡,后端对接至少2台数据库节点(MySQL 主从或集群)。
  • 数据库层负责可用性与数据一致性;SQLAdmin层负责高可用接入、会话保持与健康检查。
  • 建议开放端口:80/443(SQLAdmin)、3306(MySQL,仅限内网/VIP访问)、8443/10000(Keepalived VRRP,可选)。

前置条件与组件

  • 操作系统:CentOS 7/8(已配置 EPEL 与基础仓库)。
  • 数据库:至少2台 MySQL(建议主从复制;也可替换为 InnoDB Cluster/MGR)。
  • 负载均衡与健康检查:Nginx(HTTP/HTTPS 反向代理与负载均衡)、Keepalived(VIP 漂移与主机存活检测)。
  • Web 与 PHP 环境(若使用 phpMyAdmin 类工具):httpd/php-fpm,并准备 SQLAdmin 的配置文件与目录。

部署步骤

  1. 数据库高可用(MySQL 主从示例)

    • 主库配置(/etc/my.cnf 或 /etc/mysql/my.cnf):启用二进制日志与唯一 server-id。
      • [mysqld] 段示例:server-id=1;log_bin=/var/log/mysql/mysql-bin.log
    • 从库配置:server-id=2;relay_log=/var/log/mysql/mysql-relay-bin.log;read_only=1
    • 建立复制账号并初始化复制:
      • 主库:CREATE USER ‘replicator’@‘%’ IDENTIFIED BY ‘password’; GRANT REPLICATION SLAVE ON . TO ‘replicator’@‘%’; FLUSH PRIVILEGES;
      • 主库:SHOW MASTER STATUS; 记录 File/Position。
      • 从库:CHANGE MASTER TO MASTER_HOST=‘master_ip’, MASTER_USER=‘replicator’, MASTER_PASSWORD=‘password’, MASTER_LOG_FILE=‘file’, MASTER_LOG_POS=position; START SLAVE;
      • 验证:SHOW SLAVE STATUS\G 中 Slave_IO_Running/Slave_SQL_Running 均为 Yes。
  2. 部署 SQLAdmin(以 phpMyAdmin 为例)

    • 安装与配置:
      • 安装 EPEL 与 Web/PHP 组件(yum install -y epel-release httpd php php-mysqlnd …)。
      • 部署 phpMyAdmin,编辑配置文件(如 config.inc.php)设置 $cfg[‘blowfish_secret’] 与连接白名单。
      • 示例 Nginx 片段(/etc/nginx/conf.d/sqladmin.conf):
        • server { listen 80; server_name sqladmin.example.com; location / { root /usr/share/phpMyAdmin; index index.php; } location ~ .php$ { include fastcgi_params; fastcgi_pass unix:/var/run/php-fpm/www.sock; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; } }
      • 启动服务:systemctl enable --now httpd php-fpm。
  3. 负载均衡与健康检查(Nginx)

    • 在两台 SQLAdmin 前端节点上配置一致的 upstream,指向数据库主从或集群的读/写分离地址;启用被动健康检查与连接复用。
    • 示例(/etc/nginx/conf.d/sqladmin_upstream.conf):
      • upstream sqladmin_backend { server 10.0.0.11:3306 max_fails=3 fail_timeout=10s; server 10.0.0.12:3306 max_fails=3 fail_timeout=10s; }
      • server { listen 33060; proxy_pass sqladmin_backend; proxy_next_upstream error timeout invalid_header http_500; proxy_connect_timeout 5s; proxy_timeout 30s; }
    • 若 SQLAdmin 为 Web 管理端,则对 80/443 做反向代理与负载均衡,并在 upstream 中加入两台前端节点。
  4. VIP 与故障转移(Keepalived)

    • 两台前端节点安装 Keepalived,配置 VRRP 实例绑定VIP(如 192.168.1.100);state 一主一备、设置不同 priority;加入 TCP 健康检查(对本地 80/443 或 33060 端口)。
    • 示例(/etc/keepalived/keepalived.conf 片段):
      • vrrp_instance VI_1 { state MASTER; interface eth0; virtual_router_id 51; priority 100; advert_int 1; authentication { auth_type PASS; auth_pass 42; } virtual_ipaddress { 192.168.1.100/24; } }
      • vrrp_script chk_sqladmin { script “/usr/bin/curl -f http://127.0.0.1/ || exit 1”; interval 2; weight -20; }
      • track_script { chk_sqladmin; }
    • 启动:systemctl enable --now keepalived。
  5. 安全与网络

    • 仅允许内网或跳板机访问 3306/33060;为 VIP/HTTP 启用 TLS/HTTPS;为 SQLAdmin 管理账号实施最小权限强口令策略;按需开启 SELinuxfirewalld 并仅放行必要端口。

验证与运维

  • 可用性验证

    • 停止主库或拔掉主节点网线,确认 VIP 漂移至备机、Nginx 健康检查剔除故障节点、SQLAdmin 仍可通过 VIP 访问后端数据库。
    • 在 SQLAdmin 中执行读写操作,验证主从复制方向正确、读操作可落到从库(如配置读写分离)。
  • 监控与日志

    • 持续监控 Keepalived(/var/log/messages、journalctl -u keepalived)、Nginx(access/error)、SQLAdmin/phpMyAdmin(应用日志)、MySQL(错误日志、复制状态)。
    • 建议接入 Prometheus + Grafana 采集系统/数据库指标,并设置告警。
  • 备份与恢复

    • 定期使用 mysqldump 或物理备份工具对数据库进行全量/增量备份,并进行周期性恢复演练验证可用性。

可选增强

  • 数据库层升级为高可用套件(如 InnoDB Cluster/MGROrchestrator),SQLAdmin 仍通过 VIP/负载均衡接入,降低单点风险。
  • 引入 HAProxy 替代或配合 Nginx,提供更细粒度的健康检查与负载策略(如基于权重的读写分离)。
  • 为 SQLAdmin 增加多因素认证IP 白名单操作审计,提升安全合规能力。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: 如何在CentOS上实现SQLAdmin的高可用性
本文地址: https://pptw.com/jishu/761376.html
SQLAdmin在CentOS上的性能调优策略有哪些 CentOS SQLAdmin的数据库迁移与升级方法

游客 回复需填写必要信息