ProxySQL+Mysql实现数据库读写分离实战

有趣有内涵的文章第一时间送达!

ProxySQL介绍

1、连接池,而且是multiplexing

2、主机和用户的最大连接数限制

3、自动下线后端DB

延迟超过阀值

ping 延迟超过阀值

网络不通或宕机

4、强大的规则路由引擎

实现读写分离

查询重写

sql流量镜像

5、支持prepared statement

6、支持Query Cache

7、支持负载均衡,与gelera结合自动failover

整体环境介绍

1、系统环境

三台服务器系统环境一致如下

2、IP地址与软件版本

proxy 192.168.22.171

db1 192.168.22.173

db2 192.168.22.174

mysql 5.7.17

proxy sql 1.4.8

3、关闭防火墙、selinux

4、mysql安装与主从同步

安装请参考以下文章

主从同步请参以下文章

安装布署过程

1、数据库主从同步

查看主从同步状态

检测主从同步

2、准备proxySQL软件

3、安装配置

4、配置文件详解

5、启动服务并查看

6、在mysql上配置账号并授权

7、proxysql默认数据库说明

main:内存配置数据库,表里存放后端db实例、用户验证、路由规则等信息。表名以 runtime_开头的表示proxysql当前运行的配置内容,不能通过dml语句修改,只能修改对应的不以 runtime_ 开头的(在内存)里的表,然后 LOAD 使其生效, SAVE 使其存到硬盘以供下次重启加载。

disk:是持久化到硬盘的配置,sqlite数据文件。

stats:是proxysql运行抓取的统计信息,包括到后端各命令的执行次数、流量、processlist、查询种类汇总/执行时间等等。

monitor:库存储 monitor 模块收集的信息,主要是对后端db的健康/延迟检查。

8、proxysql的配置系统

ProxySQL具有一个复杂但易于使用的配置系统,可以满足以下需求:

1、允许轻松动态更新配置(这是为了让ProxySQL用户可以在需要零宕机时间配置的大型基础架构中使用它)。与MySQL兼容的管理界面可用于此目的。

2、允许尽可能多的配置项目动态修改,而不需要重新启动ProxySQL进程

3、可以毫不费力地回滚无效配置

4、这是通过多级配置系统实现的,其中设置从运行时移到内存,并根据需要持久保存到磁盘。

3级配置由以下几层组成:

9、配置proxysql管理用户

proxysql默认的表信息如下

在mysql上添加监控的用户

10、配置proxysql的转发规则

11、更新配置到RUNTIME中

由上面的配置系统层级关系可以得知所有进来的请求首先是经过RUNTIME层

12、将所有配置保存至磁盘上

所有配置数据保存到磁盘上,也就是永久写入/var/lib/proxysql/proxysql.db这个文件中

13、测试读写分离

创建数据与表,测试读写分离情况

在proxysql管理端查看读写分离

整个读写分离的架构配置到此就完成了,但是此架构存在需要优化的地方,那就是。实际生产环境中可采用这类架构解决此问题,请持续关注公众号,后续输出相关的架构实战。关于Mysql各类高可用架构可阅读前面的文章

  • 发表于:
  • 原文链接:https://kuaibao.qq.com/s/20180621A08EUM00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券