前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MYSQL PROXYSQL的基本原理,配置,与query cache.

MYSQL PROXYSQL的基本原理,配置,与query cache.

作者头像
AustinDatabases
发布2020-09-10 16:14:51
1.2K0
发布2020-09-10 16:14:51
举报

PorxySQL 作为使用MYSQL的一种中间件,为什么是目前比较流行的中间件之一,个人总结有以下几点。

1 友好的操作界面,操作PROXYSQL 基本上懂得MYSQL的语法即可,虽然是基于SQLLITE 数据库,但基本上操作中大部分的配置都不涉及重启,仅仅需要将配置上传到内存中即刻生效。

2 作为判断MYSQL各种方式的高可用中的主,支持的种类很多,MGR, MHA,PXC, 基本上市面上的MYSQL 通用的高可用方式都支持,并且对于MGR的多主也有相关的配置选项。

3 配置简单,如果不需要特殊的配置,则仅仅需要三步,PROXYSQL 就可以被配置成一个简单的支持MYSQL高可用的访问的通路。

既然PROXYSQL 有这么多的好处,并且前两篇也讲述了简单的PROXYSQL FOR MHA , PROXYSQL FOR INNODB CLUSTER 两种的配置的方式。今天就需要来看看到底PROXYSQL的一些原理和配置的一些细节,以及最后做一个压力方面的测试,看看PROXYSQL 本身可以承受的访问压力。

实际当中我们操作的命令大部分都在内存中,而main这个数据库就是人机交互的内存的接口。大部分的命令都是在内存中操作以后,上传到内存和写入到磁盘当中的。Disk 其实就是proxySQL 的配置的保存数据的位置,如果丢失或损坏则在PROXYSQL 重启后会遇到配置丢失的问题,所以定期的去备份数据库对PROXYSQL是有必要的。

其中有四个重要的表

  • mysql_servers PROXYSQL 接受MYSQL的数据库服务器的列表
  • mysql_users PROXYSQL 连接MYSQL的用户列表,这些用户必须已经建立在MYSQL中。
  • mysql_query_rules PROXYSQL 对于查询的一些设置的规则
  • global_variables 存储展现当前系统正在应用的系统的变量

相对于上面的四个表,下面的命令集合就是在配置完相关的表后,需要将内存操作的数据, download to disk 和 upload to run time

LOAD MYSQL USERS TO RUNTIME;SAVE MYSQL USERS TO DISK;LOAD MYSQL SERVERS TO RUNTIME;SAVE MYSQL SERVERS TO DISK;LOAD MYSQL QUERY RULES TO RUNTIME;SAVE MYSQL QUERY RULES TO DISK;LOAD MYSQL VARIABLES TO RUNTIME;SAVE MYSQL VARIABLES TO DISK; LOAD ADMIN VARIABLES TO RUNTIME;SAVE ADMIN VARIABLES TO DISK;

另外一个问题是,什么变量是必须通过重启PROXYSQL才能进行改变的

mysql-interface、mysql-threads和mysql-stacksize 这三个变量是必须通过重启才能生效的。

关于query cache 实际上MYSQL本身在5.X时是有相关的 query cache但实际上使用的并不常见,基本上都属于关闭的状态。PROXYSQL 也具备query cache 主要是针对高频的查询中的结果的返回,有人可能要说,其实这个功能也是鸡肋,其实我对这个看法是一半同意

一个功能是否是鸡肋要看他应用的场景和被需要的情况,底下图中的情况在有

些场景中是常见的使用的方式, 那换一个思维的方式, 如果将前面的redis 换成 PROXYSQL query cache 如何,部分简单的功能也是可以替换的。

MySQL查询缓存为所有表提供了一个通用的缓存空间,与此不同的是,在proxyysql查询缓存中,我们必须定义缓存的流量。这是通过定义查询规则来完成的,这些规则匹配将被缓存的流量,并为缓存的结果设置一个“cache_ttl”。

通过下面的语句在proxysql 中查询

SELECT count_star,sum_time,hostgroup,digest,digest_text FROM stats_mysql_query_digest_reset ORDER BY sum_time DESC;

我们找到频繁运行语句

INSERT INTO mysql_query_rules (rule_id,active,digest,cache_ttl,apply) VALUES (1,1,'0xAC80A5EA0101522E',5000,1);

然后我们将这条语句输入到proxysql中

LOAD MYSQL QUERY RULES TO RUNTIME; SAVE MYSQL QUERY RULES TO DISK;

然后运行加载的语句。

下次遇到同样的语句会在系统5000ms内使用PROXYSQL 内存的结果对访问者进行数据的输出。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-09-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 AustinDatabases 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档