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 强制切断或超时切断)。
相关推荐
Dxy12393102161 小时前
MySQL 连表查询更新:从理论到实践
数据库·mysql
阿丰资源2 小时前
基于Springboot+mysql的在线兼职平台(附源码)
spring boot·后端·mysql
怪祝浙2 小时前
从简单项目入手Java(学生系统)V6(Web版本 Spring Boot3 MySQL Vue3 MyBatis)
java·spring boot·mysql
噢,我明白了2 小时前
MySql数据库数据基础操作(增删改查)
数据库·mysql·增删改查
tongluowan0073 小时前
MySql中Binlog,Redolog,Undolog的应用场景及作用的时机
mysql·日志文件
振宇i3 小时前
MySQL数据库修改表结构语句
数据库·mysql
czlczl200209253 小时前
MySQL InnoDB 加锁全解析
数据库·mysql
lifewange3 小时前
SQL Server、MySQL、Oracle 核心区别对比
数据库·mysql·oracle
重生之小比特4 小时前
【MySQL 数据库】内外连接
数据库·mysql
weixin_704266054 小时前
MySQL到ES
数据库·mysql·elasticsearch