首页 > 数据库DBA > ProxySQL > ProxySQL配置与高可用
2019
07-31

ProxySQL配置与高可用

1.ProxySQL 介绍

2、环境准备

3.ProxySQL 安装与启动

下载

安装 ProxySQL

ProxySQL Cluster集群配置:(让所有proxysql同步)

首先修改配置文件,重新初始化启动cluster集群

这里要特别注意:

启动 ProxySQL

管理员登录 ProxySQL

观察集群状况 (在三台节点上都可以查看)

然后继续向下

4.ProxySQL结构图

 一般在内存那层修改 ,然后保存到运行系统(runtime),然后再持久化保存到磁盘数据库系统

三则之间关系

5.配置 ProxySQL 所需账户(先配置mysql中的用户)

6.创建分组,配置主从分布信息

8、添加主从服务器节点:

用到mysql_servers 这个表

查看:

9.为proxySQL配置监控账号 (在proxySQL中设置)

 对心跳信息的监控(对ping 指标的监控)

看看read_only的日志监控

10.为 ProxySQL 配置对外访问账号

测试:(三台节点,任意一个节点,使用proxysql登录,创建数据库,看看三台节点是否都会被路由到,看看其他mysql节点是否同时创建)

查看其他2台节点,是否创建keme数据库

122,123都已经创建没有问题

11.配置读写分离策略:路由规则

关于匹配sql语句方式选择,请看大佬写的这篇 传送门

12.测试读写分离

<1> 使用proxysql账户登录并创建一张表,并插入几条数据

如果想在 ProxySQL 中查看SQL请求路由信息stats_mysql_query_digest

常用查询语句

设置proxysql故障转移

安装故障转移脚本之前,先要在MGR数据库执行一段检测集群状态的sql视图脚本和探测语句(将下面脚本保存为sql脚本,在MGR主节点执行即可)

然后,请在Github地址下载相应的脚本

  • proxysql_groupreplication_checker.sh:用于multi-primary(多主)模式,可以实现读写分离,以及故障切换,同一时间点多个节点可以多写。
  • gr_mw_mode_cheker.sh:用于multi-primary(多主)模式,可以实现读写分离,以及故障切换,不过在同一时间点只能有一个节点能写。
  • gr_sw_mode_checker.sh:用于single-primary(单主)模式,可以实现读写分离,以及故障切换。

<1>. 将下载的脚本proxysql_groupreplication_checker.sh放到目录/var/lib/proxysql/下,并增加可以执行的权限:

scheduler表解析

查看MGR状态信息:

如果你一开始没有设置集群,而是单机配置 ,现在需要集群,则需要删除db文件使用配置文件proxysql.cnf重新初始化,当然也可以可以使用sql命令写入配置文件中的这些信息(最好用第一种,第二种目测有些瑕疵测试中)

具体操作如下:

1.添加proxysql实例节点间通讯的账号

2.插入节点信息入库

测试意外宕机,故障转移

如果此时192.168.6.122宕机的话,应用能不能直接连到其它的节点进行写操作?

现手动将192.168.6.122 mysql关闭:

然后再mysql中查看当前group组情况:

那么proxysql中会是怎样的呢?

我们再模拟写入和查询看看语句的去向

查看sql请求路由信息

再次查看sql路由请求信息:

恢复宕机机器,测试proxysql是否自动恢复,并将节点自动恢复为online

当前节点状态

可以看到122节点已经宕机,现在我启动122mysql 加入MGR组复制

组启动成功后,查看下MGR组状态

然后查看122机器的,proxysql视图当前是否正常

然后登陆proxysql的管理账号,查看节点是否已经恢复

可以看到122节点已经恢复了

再次执行查询,看是否会路由到122节点

可以看到,122节点已经加入任务节点,并且正常工作

测试查询缓存:

proxysql压测请看这个大佬文章最后使用 sysbench 进行压测

最后编辑:
作者:shooter
这个作者貌似有点懒,什么都没有留下。