千家信息网

MYSQL proxysql如何进行信息获取和信息输出

发表于:2025-01-24 作者:千家信息网编辑
千家信息网最后更新 2025年01月24日,这篇文章将为大家详细讲解有关MYSQL proxysql如何进行信息获取和信息输出,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。ProxySQL 前两
千家信息网最后更新 2025年01月24日MYSQL proxysql如何进行信息获取和信息输出

这篇文章将为大家详细讲解有关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如何进行信息获取和信息输出就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

数据 数据库 统计 信息 语句 问题 之间 方式 状态 分配 监控 内存 功能 时间 账号 中间件 前缀 可以通过 应用 有关 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 热门的零信任架构网络安全 服务器管理器中显示没有激活 数据库前件后件是什么 手游用什么服务器 网络技术技能考试教学 淮安技术管理软件开发平台 sql数据库基础 数据库代码建表 ssm软件开发环境 软件开发和生命周期流程 外文主要数据库资源 华三杯网络技术大赛山东 腾讯云基础网络是什么服务器 楚雄专业回收服务器 大学网络安全团会策划内容 区块链技术用什么软件开发 神木国家网络安全宣传 网络安全属于公检法吗 山海经的一个服务器要多少钱 java服务器管理面板 软件开发报价清单明细如何写 保山学院计算机网络技术学些什么 数据库关系中的核心运算 花瓣邮箱的收发服务器地址 软件开发的项目范围说明书 网络安全板块有360吗 国家网络安全宣传周直播 查询数据库判断是否有数据 进服务器超级管理密码是什么 软件开发进程可视化
0