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 强制切断或超时切断)。
相关推荐
灯澜忆梦6 小时前
【MySQL10】进阶篇 | 索引_#2性能优化
数据库·sql·mysql·性能优化
油丶酸萝卜别吃10 小时前
MySQL B+ 树查询全过程详解
数据库·mysql
Cry丶10 小时前
遗留系统数据迁移实战(九):区域编码迁移与补偿接口设计
mysql·数据治理·数据迁移·区域编码·补偿接口·组织区域
字节跳动数据库12 小时前
火山引擎 RDS MySQL 向量索引:把高性能向量检索带到 MySQL 上
人工智能·后端·mysql
小王C语言13 小时前
MySQL 库的操作:字符集和校验规则、数据库的增删查改、备份和还原
数据库·mysql
小王C语言13 小时前
MySQL 数据类型:数值类型、字符串类型、日期和时间类型、enum 和 set、find_in_set 查询
android·数据库·mysql
夜雪一千14 小时前
MySQL的事务是什么?原理、ACID、隔离级别与实战详解
数据库·mysql
Architect_Lee15 小时前
mac快速安装mysql
数据库·mysql·macos
冰暮流星15 小时前
mysql之查询
数据库·sql·mysql