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 强制切断或超时切断)。
相关推荐
九皇叔叔9 小时前
《MySQL 体系架构详解:Server 层、SQL 执行流程与 InnoDB、MyISAM、MEMORY 存储引擎》
sql·mysql·架构
愤怒的苹果ext12 小时前
MySQL Shell备份恢复数据库
数据库·mysql·备份恢复·mysqlsh
超兔一体云15 小时前
MySQL索引优化实战——从慢查询到索引调优
后端·mysql
2601_9620748116 小时前
大数据-264 实时数仓 - Canal MySQL的binlog研究 存储目录 变动信息 配置MySQL
大数据·数据库·mysql
2601_9620738116 小时前
大数据-240 离线数仓 - 广告业务 测试 ADS层数据加载 DataX数据导出到 MySQL
大数据·数据库·mysql
这个DBA有点耶18 小时前
SQL:2023新特性详解:JSON_TABLE、GREATEST/LEAST、QUALIFY 到底怎么用?
数据库·sql·mysql
小王C语言19 小时前
MySQL 用户管理:创建用户、给用户授权
数据库·mysql
小镇敲码人20 小时前
【深入浅出】之Qt 事件系统实战:鼠标、键盘、滚轮、窗口与定时器事件
数据库·qt·网络协议·mysql·http
Sirens.20 小时前
MySQL数据库:索引
数据库·mysql
2601_9620725020 小时前
大数据-234 离线数仓 - 异构数据源 DataX 将数据 从 HDFS 到 MySQL
大数据·mysql·hdfs