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 强制切断或超时切断)。
相关推荐
华科大胡子4 小时前
MySQL安全加固十大硬核操作
mysql
Holen&&Beer4 小时前
mysql-bind-mount-to-named-volume-migration
数据库·mysql·adb
数据库幼崽5 小时前
Proxy SQL验证方式
数据库·mysql
feng68_5 小时前
MySQL-Router+MySQL-MGR
android·linux·运维·数据库·mysql·adb
不会写DN5 小时前
php 如何使用mysqli连接mysql
开发语言·mysql·php
原来是猿5 小时前
MySQL 在 Ubuntu 环境安装
mysql·ubuntu·adb
betazhou5 小时前
xtrabackup压缩备份恢复案例
mysql·xtrabackup·备份恢复
stuartevil14 小时前
【MySQL】SQL菜鸟教程(一)
sql·mysql·oracle
流星白龙14 小时前
【MySQL】7.MySQL基本查询(2)
android·mysql·adb