【MySQL】mysql日志文件

发布于:2025-03-26 ⋅ 阅读:(24) ⋅ 点赞:(0)

目录

日志文件特征

错误日志(Error log )

常规查询日志(General query log )

慢速查询日志(Slow query log )

审计日志(Audit log )

二进制日志(Binary log )

日志文件轮转


MySQL 使用多种类型的日志来记录有关服务器活动的信息。

日志文件特征

可能会占用大量磁盘空间;可以存储在文件中;可以存储在表中(仅限常规查询和慢速查询日志);以文本格式书写(二进制日志除外)。

错误日志(Error log )

存放与启动、关闭和异常情况有关的诊断信息。默认启用,设置 --log-error=filename 将错误记录到指定文件,或者使用 --log-syslog 服务器选项将错误消息发送到 UNIX 或基于 UNIX 的系统上的系统日志 syslog (负责收集内核、应用程序和服务的日志信息,并支持灵活的存储和转发机制)。

常规查询日志(General query log )

存放服务器从客户端收到的所有语句。默认不启用,设置 --general-log-file=filename 以记录查询,可以记录在表中。全局的 general_log 和 general_log_file 服务器变量可提供对常规查询日志的运行时控制,将 general_log 设置为0(或OFF)禁用该日志,设置为1(或ON)启用该日志。

  • 该文件记录每个连接的时间和类型以及所有操作的进程ID,记录对所有表执行的所有语句,不会记录在丛属服务器上存储为基于行的二进制日志的更新操作。
  • 该文件增长非常迅速,占用空间大,所以默认关闭,一般在性能优化比较,特殊测试等场景短时间启用它,来收集这些时间段内所有活动的完整记录。

慢速查询日志(Slow query log )

需要很长时间执行的查询。默认不启用,设置 --slow-query-log-file=filename 以提供对慢速查询日志的运行时控制,可以记录在表中。将 slow_query_log 设置为 0 禁用该日志,设置为 1 启用该日志;如果日志文件已打开(运行时修改了该文件),则将其关闭,然后打开新文件。可以使用 mysqldumpslow 查看和管理日志内容。

  • 该文件记录执行时间超过指定阈值的语句,默认值是10秒,可以使用 long_query_time 服务器选项更改此阈值持续时间。但是也可以记录运行时间低于阈值的语句——不使用索引的语句,该记录需要启用 log_queries_not_using_indexes。
  • 该文件可以将额外的统计信息记录到 FILE 环境变量定义的目标位置,需要启用 log_slow_extra 服务器选项。可以在FILE和TABLE中同时记录。
  • 慢速查询日志在默认情况下不记录管理员的管理语句,但可以通过启用 log_slow_admin_statements 选项来记录此类语句;也不会记录从主服务器复制的语句,无论主服务器还是从服务器的慢查询日志都不会记录这些语句,即使他们超过了阈值,但可以通过启用 log_slow_slave_statements 选项来记录。
  • min_examined_row_limit 选项指定检查的最少行数,超过该值才会在慢速查询日志中记录。
  • log_throttle_queries_not_using_indexes 选项限制每分钟记录到慢查询日志中的未使用索引的查询语句的数量,如果未达到限制数量,查询会被记录到慢查询日志;如果已达到限制数量,新的未使用索引查询将不会被记录。
  • mysqldumpslow 命令行程序 汇总了慢速查询日志的内容。它会将类似的查询组合在一起,并且将数字参数更改为N,将字符串参数更改为 'S',显示此类查询语句的数量以及运行查询所需的平均时间和总时间;使用 -g 选项提供搜索词,仅显示与搜索词匹配的语句的摘要信息。
  • log_output 选项可以配置慢速查询日志和常规查询日志的保存位置(FILE/TABLE)。该选项参数可以包含一个或多个FILE(在mysql数据目录中有默认值hostname-slow.log 和 hostname.log文件)、TABLE(slow_log 和 general_log表,都在mysql数据库中)或NONE。

审计日志(Audit log )

企业版提供的审计功能,一种基于策略的审计。审计日志是作为企业版插件提供的,加载该日志后,可用于将事件记录到  audit_log_file 选项指定的文件中,审计过程会不断写入审计日志,直到将该插件删除,或者通过 audit_log_policy=NONE 选项设置关闭审计,在服务器启动时使用 audit_log=FORCE_PLUS_PERMANENT 作为选项,可以防止删除该插件。

二进制日志(Binary log )

存放修改数据的语句。默认启用,使用 –skip-log-bin 禁用二进制日志,服务器使用该选项值作为基名;在创建新日志文件时,在基名上添加一个升序数字后缀。这些日志文件以二进制格式(而不是文本格式)存储。

日志文件轮转

日志文件随时间的推移占用空间会越来越大,所以需要定期备份删除旧日志文件并重新记录到新的日志文件。当使用二进制日志文件进行复制操作时,该操作务必小心,以免在复制成功以前删除日志文件。可以使用脚本定期安排日志轮转时间。

备份后,先重命名当前日志文件,再进行刷新日志(flush logs 或 mysqladmin flush-logs命令):

  • 刷新二进制日志会创建新的二进制日志文件,如从binlog.000123变为binlog.000124。
  • 刷新常规和慢速查询日志,关闭当前日志文件后,以相同文件名重新打开,如果不重命名原文件,新日志会继续写入原文件,覆盖原有内容,需要先重命名原日志文件,再执行刷新操作。
# cd /var/lib/mysql
# mv server.log server.old
# mv mysql-slow.log mysql-slow.old
# mysqladmin flush-logs