ProxySQL官方文档之Audit Log

ProxySQL官方文档之Audit Log

概览

proxy SQL审计日志特性,引进于2.0.5版本,跟踪数据库整体架构的连接活动。可以通过配置mysql-auditlog_filename变量启用。(默认是空字符串,也就是不记录日志-no logging)。

配置变量

variable description default
mysql-auditlog_filename 审计日志的基础名称,后面会加8位渐进数字,比如00001,00002 " "
mysql-auditlog_filesize 文件轮转的达到多大会进行轮转(bytes) 104857600(100MB)

配置该变量方式如下:

bash 复制代码
set mysql-auditlog_filename='proxysql-audit';
load mysql variables to runtime;
save mysql variables to disk;

Logged Event

审计日志会记录如下信息:
MySQL模块:

  • Successful/failed authentication:验证成功或者失败的信息
  • gracefule disconnect:关闭连接前会完成所有的数据传输,确保正常结束通信。这种断联信息也会记录
  • closed connection:proxy SQL或者后端数据库主动关闭连接的信息。
  • schema changes(COM_INIT_DB),切换数据库的信息,比如登录到A,数据库,执行了use b,该信息也会被记录。

Admin模块

  • Successful/failed authentication:验证成功或者失败的信息
  • gracefule disconnect:关闭连接前会完成所有的数据传输,确保正常结束通信。这种断联信息也会记录
  • closed connection:proxy SQL或者后端数据库主动关闭连接的信息。

Event类型

Event Description
MySQL_Client_Connect_OK 客户端成功连接事件
MySQL_Client_Connect_ERR 客户端连接失败事件
MySQL_Client_Close 服务端关闭连接事件
MySQL_Client_Quit 客户端关闭连接事件
MySQL_Client_Init_DB 切换schema事件
Admin_Connect_OK admin成功连接proxysql事件
Admin_Connect_ERR admin连接失败proxysql事件
Admin_Close admin被服务端关闭连接事件
Admin_Quit admin客户端主动退出连接事件

JSON日志格式

每一个日志记录包含的信息如下:

Field Description
client_addr 客户端IP:Port
proxy_addr ProxySQL绑定的对外服务的接口(IP地址) (仅针对MySQL模块)
event 连接事件类型
username 连接的用户
schemaname 数据库名
ssl 是否启用SSL
thread_id 会话标识符
timestamp / time 毫秒级的事件发生时间的记录
creation_time 会创建会话时,信息仅在会话关闭时可用
duration duration: 创建会话以来的时间(以毫秒为单位),此信息仅在会话关闭时可用当(前断开时间 - creation_time)
extra_info 额外的信息,当前仅用于描述会话在代码的哪一部分关闭
markup 复制代码
creation_time: 创建会话时,信息仅在会话关闭时可用
理解:这是"出生证明",但只有在"死亡证明"(关闭日志)开具时,才会被补填上去。
为什么这样设计?
节省资源:如果在每条查询日志里都记录"我是几点出生的",会浪费存储空间和 I/O。
复盘需求:只有当连接断开时,我们才需要复盘"这个连接总共活了多久?"、"它是什么时候建立的?"。这时候把开始时间填在最后一行日志里,是最经济高效的做法。
用法:
当你看到一条 COM_QUIT 或断开的日志,查看 creation_time,就能算出这个连接存在了多久。
如果 creation_time 是几天前,而业务早已重启,说明发生了连接泄漏(应用没关连接,被 ProxySQL 强制切断或超时切断)。
相关推荐
这个DBA有点耶1 小时前
云数据库半夜卡顿,CPU才30%?深挖云盘IOPS突发限制与内核挂起机制
数据库·mysql·云原生
xixingzhe25 小时前
MySQL 锁表故障排查与处理
数据库·mysql
真上帝的左手5 小时前
30. 技术专题-‌应用框架组件-关系型数据库-MySQL-Mybatis
数据库·分布式·mysql·中间件·mybatis
为思念酝酿的痛5 小时前
MySQL表的连接
数据库·mysql
bksczm6 小时前
MySQL之存储引擎
数据库·mysql
计算机毕设定制辅导-无忧学长7 小时前
《基于微信小程序健康习惯激励系统设计与实现》
java·spring boot·mysql·微信小程序·uniapp·健康习惯激励系统
Decay__8 小时前
15_MySQL 数据同步与迁移方案 —— 复制 / DataX / Canal / 异构同步(对标 Oracle GoldenGate)
运维·数据库·sql·mysql·架构
雪芽蓝域zzs8 小时前
第 2 章:整合 MySQL + MyBatis,搭建数据库基础、实体类、Mapper、测试查询
数据库·mysql·mybatis
余槐i9 小时前
Spring Boot 3.2 偶发500无日志:线程池复用导致请求上下文丢失
spring boot·redis·后端·mysql·性能优化
孤狼GPT10 小时前
ChatGPT、Codex数据库实战:MyBatis-Plus第一页查询正常,翻到第10000页为什么越来越慢?
mysql·chatgpt·mybatis-plus·codex·深分页