暂无图片
暂无图片
1
暂无图片
暂无图片
暂无图片

MySQL日志

600

MySQL日志历史文章,

MySQL日志 - Binary log二进制日志介绍

MySQL日志 - Slow Query Log慢查询日志

MySQL日志 - Undo和Redo日志

MySQL日志 - Undo回滚日志的介绍

MySQL日志 - Relay Log中继日志的介绍

MySQL日志 - Redo Log重做日志

MySQL日志 - Error Log错误日志

MySQL日志 - General Query Log

如上文章对各种日志进行了介绍,徐老师的这篇文章则从宏观层面,再次说明了各种日志的作用和功能,监视MySQL——日志篇》。

使用日志对MySQL进行监视是一种重要的方法,通过日志可以评估服务器的操作状态,服务器崩溃后可以帮助进行数据恢复,使用复制功能时,能够帮助用户判断慢查询,此外还可以帮助用户确认安全合规等问题。本篇将介绍MySQL的各种日志。

MySQL包含多个日志用于记录服务完全的行为,其中错误日志(Error log)包含服务器启动、关闭、异常等诊断信息。二进制日志(Binary log)包含数据更改的信息。通用查询日志(General query log)包含服务器从客户端接收到的全部语句。慢查询日志(Slow query log)包含执行时间过长的查询。审计日志(Audit log)在企业版中提供,包含基于规则的监视、记录、阻挡连接和查询的活动等。

日志的特点:

  • 消耗大量的磁盘空间

  • 存储在文件

  • 存储在表

  • 可加密
  • 文本格式写入(二进制日志除外)
错误日志(Error Log)

错误日志默认开启,用于记录诊断信息,例如,记录MySQL服务器在启动和关闭过程中出现的错误,及警告信息等。使用组件可以对错误日志进行过滤及汇集的配置,例如,"log_fileter_internal"可以基于错误代码及事件的优先级进行过滤,"log_filter_dragnet"则可以基于用户提供的规则进行过滤。汇集组件包括log_sink_internal用于将日志内容写入到文件或控制台,"log_sink_json"用于将日志内容以JSON格式写入到文件或控制台,"log_sink_syseventlog"则用于将日志内容写入操作系统的系统日志中。

"log_fileter_internal"组件通过配置"log_error_verbosity"和"log_error_suppression_list"服务器变量进行过滤,"log_filter_dragnet"组件通过"log_error-fileter_rules"服务器变量定义过滤规则。

二进制日志(Binary Log)

日志包含数据和模式的变更及时间戳。MySQL 8.0默认开启二进制日志。二进制日志通常用于时间点恢复及复制功能,当服务器重启,或达到日志最大容量设置时,日志将进行轮换。用户可以通过"SHOW BINARY LOGS"、"SHOW MASTER STATUS"查看日志的元数据,并且可以通过"SHOW BINLOG EVENTS"语句或"mysqlbinlog"客户端工具查看日志的内容。

二进制日志可以自动清理,用户通过"binlog_expire_logs_seconds","expire_logs_days"变量进行配置,默认为30日,在服务器重启或者日志轮换时进行清理。

此外,用户可以使用"PURGE BINARY LOGS"语句手动清理日志,例如,"PURGE BINARY LOGS TO 'log_name'"或"PURGE BINARY LOGS BEFORE"。

通用查询日志(General Query Log)

通用查询日志通过"general_log"服务器选项开启,该日志能够记录全部操作的进程ID、每种连接的类型和时间、所有表上的全部执行语句。(在从服务器基于格式二进制日志存储的更新操作除外)

注意,通用查询日志的增长速度非常快,因为它在短期内收集并记录该期间内的全部活动,并且开销巨大,使用时需要注意。

慢查询日志(Slow Query Log)

用户使用慢查询日志定位查询过慢的语句,用于调优通过服务器选项"slow_query_log启用",日志记录执行时长超过阈值的语句,阈值默认为10秒,用户可以通过"long_query_time"选项修改阈值,单位为微秒。该日志还可以通过启用"log_queries_not_using_indexs"记录没有使用索引的长语句。默认情况下,管理语句不会记录到慢查询日志,用户可以开启"log_slow_admin_statements"选项启用记录。注意,从主服务器复制过来的语句不会出现在从服务器的慢查询日志中。

慢查询日志提供了服务器选项用于过滤记录的事件。"min_examined_row_limit"选项用于指定语句检查的最低行数。"log_throttle_queries_not_using_indexes"选项用于指定60秒内没有使用索引语句的数量,当日志记录这些查询后,将汇总数量与合计时间。

用户通过"mysqldumpslow"客户端能够汇总查看慢查询日志的内容,例如,

    mysqldumpslow -g 'update `mem_inventory`.`MysqlServer` /var/lib/mysql/hostname-slow.log
    复制

    "-g"选项用于提供查找的内容,结果仅显示与查询内容匹配的汇总信息。

    日志轮换及刷新

    日志会消耗大量的磁盘空间,用户需要定期备份、删除旧的日志。删除日志时需要注意,特别是使用二进制日志进行复制时。此外,备份后需要刷新日志,用户可以执行"FLUSH LOGS"语句或使用"mysqldadmin flust-logs"刷新日志可以创建新的二进制日志、关闭并再开启错误日志,通用查询日志,及慢查询日志。注意,刷新日志前需要将当前的日志改名保存。例如,

      cd var/lib/mysql
      mv server.log server.bk
      mv mysql-slow.log mysql-slow.bk
      mysqladmin flush-logs
      复制


      如果您认为这篇文章有些帮助,还请不吝点下文章末尾的"点赞"和"在看",或者直接转发pyq,




      近期更新的文章:
      关于如何清理过多索引的思考
      MySQL日志 - Binary log二进制日志介绍
      最近碰到的一些问题
      同一主机上启动多台MySQL服务器操作场景
      一个job问题引出的Oracle官方文档的差错

      近期的热文:
      推荐一篇Oracle RAC Cache Fusion的经典论文
      "红警"游戏开源代码带给我们的震撼

      文章分类和索引:
      公众号1200篇文章分类和索引

      文章转载自bisal的个人杂货铺,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

      评论