如何在Linux上配置高可用的数据库代理

来源:Android社区作者:IT柏拉图头衔:草根站长
导读:本期聚焦于小伙伴创作的《如何在Linux上配置高可用的数据库代理》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《如何在Linux上配置高可用的数据库代理》有用,将其分享出去将是对创作者最好的鼓励。

在Linux系统中配置高可用的数据库代理,能够有效分担数据库读写压力,避免单点故障导致服务不可用,是提升数据库服务稳定性的重要手段。本文以常用的ProxySQL为例,介绍完整的配置流程。

如何在Linux上配置高可用的数据库代理

环境准备

首先需要准备两台Linux服务器作为代理节点,一台作为主节点,一台作为备节点,同时准备至少两台数据库服务器组成数据库集群。所有服务器需要提前配置好网络互通,关闭防火墙或者开放对应端口,本文使用的系统为CentOS 7,ProxySQL版本为2.4.4。

安装ProxySQL

在两台代理节点上分别执行以下命令安装ProxySQL:

# 下载ProxySQL安装包
wget https://github.com/sysown/proxysql/releases/download/v2.4.4/proxysql-2.4.4-1-centos7.x86_64.rpm
# 安装依赖
yum install -y perl-DBD-MySQL
# 安装ProxySQL
rpm -ivh proxysql-2.4.4-1-centos7.x86_64.rpm

配置ProxySQL基础参数

修改主节点的ProxySQL配置文件/etc/proxysql.cnf,核心配置如下:

datadir="/var/lib/proxysql"

admin_variables=
{
    admin_credentials="admin:admin"
    mysql_ifaces="0.0.0.0:6032"
}

mysql_variables=
{
    threads=4
    max_connections=2048
    default_query_delay=0
    default_query_timeout=36000000
    have_compress=true
    poll_timeout=2000
    interfaces="0.0.0.0:6033"
    default_schema="information_schema"
    stacksize=1048576
    server_version="5.7.30"
    connect_timeout_server=3000
    monitor_username="monitor"
    monitor_password="monitor_pass"
    monitor_history=600000
    monitor_connect_interval=60000
    monitor_ping_interval=10000
    monitor_read_only_interval=1500
    monitor_read_only_timeout=500
    ping_interval_server_msec=120000
    ping_timeout_server=500
    commands_stats=true
    sessions_sort=true
    connect_retries_on_failure=10
}

配置完成后启动主节点ProxySQL服务:

systemctl start proxysql
systemctl enable proxysql

添加数据库节点到ProxySQL

登录ProxySQL管理端,添加后端数据库服务器信息:

-- 登录管理端,端口为6032
mysql -u admin -padmin -h 127.0.0.1 -P 6032

-- 添加后端数据库节点,假设两台数据库IP为192.168.0.10和192.168.0.11
INSERT INTO mysql_servers (hostgroup_id, hostname, port, weight, comment) VALUES (1, '192.168.0.10', 3306, 100, 'master_db');
INSERT INTO mysql_servers (hostgroup_id, hostname, port, weight, comment) VALUES (1, '192.168.0.11', 3306, 50, 'slave_db');

-- 配置读写分离规则,读请求走hostgroup 1,写请求走hostgroup 2
INSERT INTO mysql_query_rules (rule_id, active, match_digest, destination_hostgroup, apply) VALUES (1, 1, '^SELECT.*FOR UPDATE$', 2, 1);
INSERT INTO mysql_query_rules (rule_id, active, match_digest, destination_hostgroup, apply) VALUES (2, 1, '^SELECT', 1, 1);

-- 加载配置到运行时并保存到磁盘
LOAD MYSQL SERVERS TO RUNTIME;
SAVE MYSQL SERVERS TO DISK;
LOAD MYSQL QUERY RULES TO RUNTIME;
SAVE MYSQL QUERY RULES TO DISK;

配置高可用集群

使用Keepalived实现两个ProxySQL节点的高可用,在主备节点安装Keepalived:

yum install -y keepalived

主节点Keepalived配置文件/etc/keepalived/keepalived.conf内容如下:

global_defs {
    router_id proxy_ha_1
}

vrrp_instance VI_1 {
    state MASTER
    interface eth0
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 123456
    }
    virtual_ipaddress {
        192.168.0.100/24
    }
}

备节点配置文件修改state为BACKUP,priority为90,其余配置保持一致。启动Keepalived服务:

systemctl start keepalived
systemctl enable keepalived

故障转移测试

停止主节点的ProxySQL服务,观察虚拟IP是否自动漂移到备节点:

systemctl stop proxysql
ip addr show eth0

如果备节点的eth0网卡上出现192.168.0.100这个虚拟IP,说明高可用配置生效。此时应用端连接192.168.0.100:6033即可正常访问数据库,无需修改连接配置。

注意事项

  • ProxySQL的监控用户需要在后端数据库中存在,并且拥有对应的权限
  • Keepalived的虚拟IP需要和服务器同网段,避免网络不通
  • 定期备份ProxySQL的配置文件和磁盘数据,避免配置丢失
  • 可以根据实际业务需求调整ProxySQL的连接数、线程数等参数

Linux数据库代理高可用ProxySQL修改时间:2026-07-03 13:06:27

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。