• 欢迎来到本博客,希望可以y一起学习与分享

proxysql

MySQL benz 2年前 (2021-06-06) 232次浏览 0个评论 扫描二维码
文章目录[隐藏]

搭建教程

使用ProxySQL实现MySQL Group Replication的故障转移、读写分离(一)
使用ProxySQL实现MySQL Group Replication的故障转移、读写分离(二)
以下仅作参考:
ProxySQL+MGR实现读写分离和主节点故障无感知切换 – 完整操作记录

总结

proxysql的一些基础知识

端口

proxysql有6032、6033、6080 端口。

  • 6032:是proxysql 管理端口(consle方式)
  • 6033:是proxysql 客户端口
  • 6080:是proxysql 管理端口(web方式,默认关闭)

配置

proxysql有配置文件和SQL语句动态配置两种方式。除了固定的配置使用配置文件以外,其余建议使用SQL语句配置。
proxysql的配置文件路径:/etc/proxysql.cnf。
proxysql初次启动必须有proxysql.cnf文件,如无其他修改,默认内容如下:

ProxySQL多层配置系统

前面我们说到ProxySQL具有“零停机时间变更”功能,它是通过3层配置来实现的,3层配置包括:Runtime、Memory、Disk & Configuration File。

  • Runtime层表示ProxySQL工作线程使用的内存数据结构;
  • Memory(也被称为main)层经由一个MySQL兼容接口露出的内存数据库,用户可以使用MySQL客户端连接到管理界面,查看、编辑ProxySQL配置表;
  • Disk & Configuration File。Disk层是一个存放在磁盘上的SQLite3数据库,Disk层可将内存中的配置信息保存到磁盘,以便ProxySQL重新启动后配置还可用。

3个层面的信息有什么区别呢?我个人的理解是:3个层面保存的都是ProxySQL的配置信息,如果管理员未作修改,那么3个层面的配置信息是相同的。如果管理员要修改配置信息,首先需要修改Memory层,要让修改的信息立刻生效,则需要把Memory层的变更信息推到Runtime层;要让修改的配置信息在ProxySQL重启后还能保存下来,则需要把Memory层的信息推到Disk层。Runtime层是ProxySQL正在使用的配置信息,Memory层是用户可以编辑的信息,Disk层可以把配置信息永久保存在磁盘上。

部署流程

下载MySQL和proxysql,并且安装。proxysql不能直接登录,需要借助MySQL的命令才能登陆。
编辑proxysql的配置文件:

使用如下基础配置,启动proxysql:

登录上proxysql admin

-h:proxysql 的地址
-P:proxysql 的管理端口
-u:proxysql 的管理用户名
-p:proxysql 的管理密码
这些都在/etc/proxysql.cnfadmin_variables配置的。
配置分组信息

这些字段含义如下:

  • write_hostgroup:默认情况下会将所有流量发送到这个组。具有read_only=0的节点也将分配到这个组;
  • backup_writer_hostgroup:如果集群有多个写节点(read_only=0)且超过了max_writers规定数量,则会把多出来的写节点放到备用写组里面;
  • reader_hostgroup:读取的流量应该发送到该组,只读节点(read_only=1)会被分配到该组;
  • offline_hostgroup:当ProxySQL监视到某个节点不正常时,会被放入该组;
  • active:是否启用主机组,当启用时,ProxySQL将监视主机在各族之间移动;
  • max_writers:最大写节点的数量,超过该值的节点应该被放入backup_write_hostgroup;
  • writer_is_also_reader:一个节点既做写节点也做读节点,如果该值为2,则backup_writer_hostgroup的节点做读写点,但是writer_hostgroup不会做读节点;

查看结果

在MySQL上:
创建系统视图sys.gr_member_routing_candidate_status,该视图将为ProxySQL提供组复制相关的监控状态指标。


在三个mysql节点上可以查看该视图:

在proxysql上:
MySQL服务器添加:

监控用户配置

注意:这个监控账号密码要与配置文件/etc/proxysql.cnfmysql_variables一致。
在MySQL上
创建监控用户

授权视图

在proxysql上:
配置监控间隔

检查监控信息是否存在异常

 

要确保error全部为null
在MySQL上
创建proxysql用户

在proxysql上:
创建proxysql用户 (要与MySQL配置的一样)

使用proxysql用户登录测试

在proxysql上:
配置读写分离参数

查看结果

配置scheduler
在https://github.com/ZzzCrazyPig/proxysql_groupreplication_checker上有三个脚本,因为我这里是多写模式,所以按要求选择了proxysql_groupreplication_checker.sh脚本。

 

 

压测

安装sysbench

 

先建一个测试库

预备

测试

 

附件

proxysql_groupreplication_checker
ddition_to_sys.sql

中文文档

https://github.com/malongshuai/proxysql/wiki


文章 proxysql 转载需要注明出处
喜欢 (0)

您必须 登录 才能发表评论!