2.37 审计日志/sql_dump log

2.37.1 介绍

在读写分离(或者分析)用户中,方便观察SQL在DBLE中具体下发到某个后端实例,耗时等信息;
局限性:分表分库用户不参与审计日志的记录

2.37.2 日志格式

[时间][SQL digest hash][SQL类型][事务ID][影响行数][用户][前端IP:端口][后端IP:端口][执行时间] SQL文本内容

  • [时间]:执行完后,日志记录的时间;精确到毫秒
  • [SQL digest hash]: SQL摘要信息的hash值
  • [SQL类型] :SQL类型;一般有:Insert、Update、Delete、Select、Show、DDL、Begin、Commit、Rollback等,其余为Other
  • [事务ID]:是一根前侧连接级别的事务累加的计数器;同一根前侧连接中,事务ID相同的语句视为同一事务内的语句
  • [影响行数]:返回的行数
  • [用户]:用户名称(:租户名称)
  • [前端IP:端口]:客户端的IP和PORT
  • [后端IP:端口]:用到的后端连接对应的物理库所在的IP和PORT
  • [执行时间]:SQL执行耗时;以毫秒为单位
  • SQL文本内容:截取SQL的1024长度用于展示

2.37.3 相关配置

-DenableSqlDumpLog=0          # 开关,0-关闭(默认),1-开启
-DsqlDumpLogBasePath=sqldump  # base路径
-DsqlDumpLogFileName=sqldump.log     # 日志文件名,生成日志的相对路径:sqldump/sqldump.log
-DsqlDumpLogCompressFilePattern=${date:yyyy-MM}/sqldump-%d{MM-dd}-%i.log.gz  ## 压缩日志文件命名格式,如:sqldump/2022-10/sqldump-10-11-1.log.gz(精度为:天)
-DsqlDumpLogOnStartupRotate=1  # 每次重启,是否触发日志翻转;1-是,0-否
-DsqlDumpLogSizeBasedRotate=50MB   # 当sqldump.log文件大小达到50MB,触发日志翻转;单位可以为:KB、MB、GB
-DsqlDumpLogTimeBasedRotate=1  # 间隔天数,触发日志翻转;如:1,则每天会进行反转
-DsqlDumpLogDeleteFileAge=90d   # 对过期90天内的压缩文件进行删除,单位可以为:d(天)、h(时)、m(分)、s(秒);(注意,精度单位需要与sqlDumpLogCompressFilePattern保持一致,否者可能不生效;原因:基于log4j2的实现,存在这个现象
-DsqlDumpLogCompressFilePath=*/sqldump-*.log.gz  # 过期的文件压缩匹配

2.37.4 相关命令

enable @@sqldump_sql; -- 开启
disable @@sqldump_sql; -- 关闭
select * from dble_variables where variable_name like '%sqldump%';  -- 查询sqldump相关的变量

2.37.5 其他

0、SQL在DBLE中执行,但没有实际下发到后端实例,则不参与记录
1、Exit、Quit 语句不参与记录
3、COM_STMT_PREPARE 不参与统计,COM_STMT_EXECUTE参与统计
4、执行多语句,也参与记录
5、DBLE内部语法依赖于Druid,若Druid不支持的语法且需要脱敏处理,因此暂时无法展示sql模版,“SQL文本内容”部分均由“Other”代替展示
6、审计日志基于log4j2的实现

results matching ""

    No results matching ""