proxysql使用心得

news/2024/11/24 14:01:11/

proxySQL

多层配置系统结构

+-------------------------+|         RUNTIME         |+-------------------------+/|\          ||           |[1] |       [2] ||          \|/+-------------------------+|         MEMORY          |+-------------------------+ _/|\          |      |\|           |        \[3] |       [4] |         \ [5]|          \|/         \+-------------------------+  +---------------+|          DISK           |  |  CONFIG FILE  |+-------------------------+  +---------------+

解释下这个3层的配置系统。

最底层的是disk库和config file。这里需要注意,这里的config file就是传统的配置文件,默认为/etc/proxysql.cnf,ProxySQL启动时,主要是从disk库中读取配置加载到内存并最终加载到runtime生效,只有极少的几个特定配置内容是从config file中加载的,除非是第一次初始化ProxySQL运行环境(或者disk库为空)。

中间层的是memory,表示的是内存数据库,其实就是main库。通过管理接口修改的所有配置,都保存在内存数据库(main)中。当ProxySQL重启或者崩溃时,这个内存数据库中的数据会丢失,所以需要save到disk库中。

最上层的是runtime,它是ProxySQL有关线程运行时读取的数据结构。换句话说,该数据结构中的配置都是已生效的配置。所以,修改了main库中的配置后,必须load到runtime数据结构中才能使其生效

常用管理命令

登录

mysql -uadmin -p -h127.0.0.1 -P6032

6032为管理端口

查看挂接的mysql

select * from mysql_servers;

结果形如:

±-------------±--------------±-----±----------±-------±-------±------------±----------------±--------------------±--------±---------------±--------+
| hostgroup_id | hostname | port | gtid_port | status | weight | compression | max_connections | max_replication_lag | use_ssl | max_latency_ms | comment |
±-------------±--------------±-----±----------±-------±-------±------------±----------------±--------------------±--------±---------------±--------+
| 10 | xx.xx.xx.67 | 3306 | 0 | ONLINE | 2 | 0 | 1000 | 0 | 0 | 0 | |
| 20 | xx.xx.xx.67 | 3306 | 0 | ONLINE | 2 | 0 | 1000 | 0 | 0 | 0 | |
| 10 | xx.xx.xx.69 | 3306 | 0 | ONLINE | 1 | 0 | 1000 | 0 | 0 | 0 | |
| 20 | xx.xx.xx.69 | 3306 | 0 | ONLINE | 1 | 0 | 1000 | 0 | 0 | 0 | |
±-------------±--------------±-----±----------±-------±-------±------------±----------------±--------------------±--------±---------------±--------+

各字段含义如下:

hostgroup_id:该后端MySQL实例所在的主机组。注意,同一MySQL节点可属于多个主机组。
hostname,port:后端MySQL监听的地址和端口。就是默认3306端口的意义
status:
ONLINE:该后端MySQL节点完全正常。
SHUNNED:该后端MySQL节点将暂时被ProxySQL自动避开(忽略),原因可能是一个较短时间内发生了大量连接错误,也可能是该slave与master的数据延迟太大(replication lag)。
OFFLINE_SOFT:当某后端MySQL被设置为 OFFLINE_SOFT 时,ProxySQL将不会向它发送新的请求,但该节点正在执行的事务会继续执行,直到所有事务执行完毕后会进入非激活状态。也就是说,和该后端的连接会保持到事务执行完毕。这可以实现后端节点的graceful停止、重启。
OFFLINE_HARD:当某后端MySQL被设置为 OFFLINE_HARD 时,ProxySQL将不会向它发送新的请求,该节点正在执行的事务也会立即中断。也就是直接将该后端杀掉。等价于删除该节点,或临时将其移除出组(例如出于维护的目的)。

weight:节点在组中的权重值越高,ProxySQL会发送越多请求给它们

compression:如果该字段的值设置为大于0,ProxySQL和该后端新建的连接中,ProxySQL将会先压缩数据再传输。

max_connections:和mysql后端允许建立的最大连接数。当达到最大数量时,即使该后端的权重很大,也不会和它新建连接。默认值为1000,表示每个后端最多能同时接受1000个连接。请确保该后端的max_connections值是合理的,以避免MySQL超负荷时ProxySQL继续向其发送请求。

max_replication_lag:如果值大于0,ProxySQL的Monitor模块将会定期检查该slave的复制是否延后于master,如果延迟的值大于该字段的值,ProxySQL将会暂时避开该节点,直到该slave赶上master。

use_ssl:如果设置为1,则和该后端MySQL建立SSL连接。

max_latency_ms:Monitory模块定期向该后端发起ping检查,如果该节点的ping时间大于该字段的值,则将其排除在连接池之外(尽管该节点仍处于ONLINE状态)。

comment:该表的说明信息,可随便定义。

查看读写组

select * from mysql_replication_hostgroups;

查看用户

select * from mysql_users;

ProxySQL有多种粒度的路由规则,每个用户都有默认的路由目标组,当使用该用户发送的SQL语句没有能够匹配的语句级路由规则,则会将该SQL语句路由给该用户默认的路由目标组。

查看路由规则

select * from runtime_mysql_query_rules;

参考

https://www.cnblogs.com/f-ck-need-u/p/9281199.html


http://www.ppmy.cn/news/1067105.html

相关文章

玩转Mysql系列 - 第9篇:分组查询详解(group by having)

这是Mysql系列第9篇。 环境:mysql5.7.25,cmd命令中进行演示。 本篇内容 分组查询语法 聚合函数 单字段分组 多字段分组 分组前筛选数据 分组后筛选数据 where和having的区别 分组后排序 where & group by & having & order by &am…

postgresql 性能调优

性能调优是为了提高 PostgreSQL 数据库的性能和响应速度。下面是一些常见的 PostgreSQL 性能调优技巧: 1 确保合适的硬件资源:确保数据库服务器具有足够的内存、处理器和磁盘空间,以满足数据库负载的需求。2 优化查询语句:检查并优…

解析代理IP在跨境电商和社媒营销中的关键作用

跨境电商和社媒营销领域的从业者深知,代理IP的价值愈发凸显。在推广营销的过程中,频繁遇到因IP关联而封禁账号的情况,或因使用不安全IP而导致异常问题。 这些问题促使人们开始高度重视代理IP的作用。但实际上,代理IP究竟是何物&a…

Java匿名内部类

文章目录 前言一、使用匿名内部类需要注意什么?二、使用步骤匿名内部类的结构匿名内部类的实用场景1. 事件监听器2. 过滤器3. 线程4. 实现接口5.单元测试:6.GUI编程7.回调函数 前言 Java中的匿名内部类是一种可以在声明时直接创建对象的内部类。这种内部…

使用Python爬虫采集网络热点

在当今信息爆炸的时代,了解网络热搜词和热点事件对于我们保持时事敏感性和把握舆论动向非常重要。在本文中,我将与你分享使用Python爬虫采集网络热搜词和热点事件的方法,帮助你及时获取热门话题和热点新闻。 1. 网络热搜词采集 网络热搜词是人…

邂逅JavaScript

前言:前端三大核心 前端开发最主要需要掌握的是三个知识点:HTML、CSS、JavaScript 一、认识编程语言 1.计算机语言 前面我们已经学习了HTML和CSS很多相关的知识: 在之前我们提到过, HTML是一种标记语言, CSS也是一种样式语言; 他们本身都是属于计算…

前端基础(Element、vxe-table组件库的使用)

前言:在前端项目中,实际上,会用到组件库里的很多组件,本博客主要介绍Element、vxe-table这两个组件如何使用。 目录 Element 引入element 使用组件的步骤 使用对话框的示例代码 效果展示 vxe-table 引入vxe-table 成果展…

力扣:73. 矩阵置零(Python3)

题目: 给定一个 m x n 的矩阵,如果一个元素为 0 ,则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。 来源:力扣(LeetCode) 链接:力扣(LeetCode)官网 - 全球极客挚…