十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
这篇文章将为大家详细讲解有关MySQL proxysql如何进行信息获取和信息输出,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。
目前创新互联已为上千多家的企业提供了网站建设、域名、网站空间、网站托管、服务器托管、企业网站设计、蒙城网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。
ProxySQL 前两期针对不同的MYSQL高可用的方式来说的, 本期会更加深入到PROXYSQL 的一些本身的东西.
在PROXYSQL 中有一个表,存储了所有的global variables, 其中包含了大量的变量值.实际上,这些就是键值对. 其中分为 MYSQL 为前缀的和 以 admin为前缀的两个部分.
其中mysql 为前缀的主要是与MYSQL 有关的变量,
1 mysql-auditlog_filename 这个变量主要是建立一个auditlog , 给出相关路径和文件名, 会在指定的位置生成audit log , audit log 主要是记录与中间件proxysql 连接的账号,地址以及操作的数据库对象, 使用json的格式.
update global_variables set variable_value = '/proxysql/log/audit.log' where variable_name = 'mysql-auditlog_filename' ;
其中包含访问的时间,数据库账号,访问的源地址等等信息,基本上
2 记录访问MYSQL中的一些访问的语句通过不同的条件来过滤
从proxysql 2.0.6 开始可以记录查询中的相关的记录, 默认这个开关是关闭的
配置是相对简单的,例如我们对某个应用账号的执行的语句进行监控,则我们可以做以下工作.
SET mysql-eventslog_filename='queries.log';
SET mysql-eventslog_default_log=1;
INSERT INTO mysql_query_rules (rule_id, active,username, log,apply) VALUES (1,1,'contact',1,0);
SET mysql-eventslog_format=2;
SAVE MYSQL VARIABLES TO DISK;
LOAD MYSQL VARIABLES TO RUNTIME;
在操作完毕后,凡是 contact 账号操作的语句会被记录在queries.log 文件中
3 关于proxysql 的工作情况
虽然PROXYSQL 比较皮实耐用,但了解内部的系统的一些运行状态还是重要的,
jemalloc_active 已经分配给应用的页面
jemalloc_allocated 已经分配给应用的字节
jemalloc_metadata 元数据库分配的内存
Auth_memory 认证模块分配的内存
SQLlite3_memory_bytes PROXYSQL 分配的内存
query_digest_memory 上面刚刚提到的,对执行的语句进行过滤分配的内存
ProxySQL 本身也对执行的语句进行一个统计,下面的
select * from global_variables where variable_name = 'mysql-commands_stats';
默认统计PROXYSQL 接受的语句,并根据语句的反馈进行相关的统计
SELECT * FROM stats_mysql_commands_counters;
可以根据其中的已经有的统计项对相关的命令进行一个统计, 这弥补了部分MYSQL方面的这部分的统计数据获取的麻烦.
上图是通过对 stats_mysql_connection_pool 进行访问,得到当前外部访问MYSQL 的状态, 这个表可以显现,当前有多少连接针对指定的数据库服务器,并且产生的queries ,产生的数据发送bytes ,接受到的bytes 等等信息
在MYSQL 中可以通过 show processlist 来查看当前和MYSQL正在交互的session的清空, PROXYSQL 中也是提供 stats_mysql_processlist 对系统当前连接进来的连接进行展示.
在MYSQL中5.7 已经具备了追踪历史查询的功能, proxysql 也提供了类似的功能并且统计的信息会更全面提取更方便.
select * from stats_mysql_query_digest;
或者统计当前的与数据库有关的账户连接的情况
mysql 本身统计相关信息的方式也不少,但proxysql 将这些统计信息做的更好,并且提取时也不会和MYSQL 本身有冲突.
除此以外proxysql 也具备相关的丰富的日志记录功能,在数据库中有一个monitor 数据库,其中存储着相关的监控记录, 以下举几个例子
1 如何判断proxysql 和 数据库服务器之间的网络响应的问题
通过下面的语句
select * from mysql_server_ping_log where time_start_us in (select time_start_us from mysql_server_ping_log order by time_start_us desc limit 3);
通过遍历最新的记录,可以判断数据库和PROXYSQL的连通性和时间延迟,或者根本就无法连接的问题。
2 PROXYSQL 与数据库连接之间的时间
select * from mysql_server_connect_log where time_start_us in (select time_start_us from mysql_server_connect_log order by time_start_us desc limit 3);
3 判断到底当前主库和从库之间到底谁是主谁是从。
select hostname,time_start_us,success_time_us,read_only from mysql_server_read_only_log where time_start_us in (select time_start_us from mysql_server_read_only_log order by time_start_us desc limit 5);
这三者有什么关系,1 最基本的是中间件和数据库之间是否连通,如果此处出现问题,则表明中间件和数据库之间的网络或者连通的数据库本身是否出现问题,出现问题就需要告警
2 此时与数据库连接之间的问题是1来判断,而2 则是判断PROXYSQL 与数据库之间的连接的状态的问题,这里主要注意的是,连接的时间
3 则是判定数据流的目的地是哪里,整体的数据复制集合中,主库是否存在通过这个日志可以判断当前的数据流的流向以及主从库的状态问题。
所以完全可以通过PROXYSQL 来写一套程序来判断当前整体MYSQL复制集的状态。
另外本身PROXYSQL 的stats_ 就可以通过MYSQL 协议来进行各种状态的获取,并且一些开源监控软件 PMM 也可以对其进行监控. PROXYSQL 也对监控的方式提供了 WEB 方式, 提供的数据比较有限, 但在没有其他方式的加持和对此进行一个图形监控的时候,这个方式也是一个好方法.
今天就到此为止,但PROXYSQL 本身的功能是强大了,例如读写分离, 以及控制读写分离在主从延迟后的如何操作都有相关的设置。
关于MYSQL proxysql如何进行信息获取和信息输出就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。