MySQL中常见的几种日志汇总

 更新时间:2020年08月23日 14:35:06   作者:kunjian  
这篇文章主要给大家介绍了关于MySQL中常见的几种日志,文中通过实例代码结束的非常详细,对大家学习或者使用MySQL具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧

前言:

在 MySQL 系统中,有着诸多不同类型的日志。各种日志都有着自己的用途,通过分析日志,我们可以优化数据库性能,排除故障,甚至能够还原数据。这些不同类型的日志有助于我们更清晰的了解数据库,在日常学习及运维过程中也会和这些日志打交道。本节内容将带你了解 MySQL 数据库中几种常用日志的作用及管理方法。

1.错误日志(errorlog)

错误日志记录着 mysqld 启动和停止,以及服务器在运行过程中发生的错误及警告相关信息。当数据库意外宕机或发生其他错误时,我们应该去排查错误日志。

log_error 参数控制错误日志是否写入文件及文件名称,默认情况下,错误日志被写入终端标准输出stderr。当然,推荐指定 log_error 参数,自定义错误日志文件位置及名称。

# 指定错误日志位置及名称
vim /etc/my.cnf 
[mysqld] 
log_error = /data/mysql/logs/error.log

相关配置变量说明:
log_error={1 | 0 | /PATH/TO/ERROR_LOG_FILENAME}
定义错误日志文件。作用范围为全局或会话级别,属非动态变量。

2.慢查询日志(slow query log)

慢查询日志是用来记录执行时间超过 long_query_time 这个变量定义的时长的查询语句。通过慢查询日志,可以查找出哪些查询语句的执行效率很低,以便进行优化。

与慢查询相关的几个参数如下:

  1. slow_query_log :是否启用慢查询日志,默认为0,可设置为0,1。
  2. slow_query_log_file :指定慢查询日志位置及名称,默认值为host_name-slow.log,可指定绝对路径。
  3. long_query_time :慢查询执行时间阈值,超过此时间会记录,默认为10,单位为s。
  4. log_output :慢查询日志输出目标,默认为file,即输出到文件。

默认情况下,慢查询日志是不开启的,一般情况下建议开启,方便进行慢SQL优化。在配置文件中可以增加以下参数:

# 慢查询日志相关配置,可根据实际情况修改
vim /etc/my.cnf 
[mysqld] 
slow_query_log = 1
slow_query_log_file = /data/mysql/logs/slow.log
long_query_time = 3
log_output = FILE

3.一般查询日志(general log)

一般查询日志又称通用查询日志,是 MySQL 中记录最详细的日志,该日志会记录 mysqld 所有相关操作,当 clients 连接或断开连接时,服务器将信息写入此日志,并记录从 clients 收到的每个 SQL 语句。当你怀疑 client 中的错误并想要确切知道 client 发送给mysqld的内容时,通用查询日志非常有用。

默认情况下,general log 是关闭的,开启通用查询日志会增加很多磁盘 I/O, 所以如非出于调试排错目的,不建议开启通用查询日志。相关参数配置介绍如下:

# general log相关配置
vim /etc/my.cnf 
[mysqld]
general_log = 0 //默认值是0,即不开启,可设置为1
general_log_file = /data/mysql/logs/general.log //指定日志位置及名称

4.二进制日志(binlog)

关于二进制日志,前面有篇文章做过介绍。它记录了数据库所有执行的DDL和DML语句(除了数据查询语句select、show等),以事件形式记录并保存在二进制文件中。常用于数据恢复和主从复制。

与 binlog 相关的几个参数如下:

  • log_bin :指定binlog是否开启及文件名称。
  • server_id :指定服务器唯一ID,开启binlog 必须设置此参数。
  • binlog_format :指定binlog模式,建议设置为ROW。
  • max_binlog_size :控制单个二进制日志大小,当前日志文件大小超过此变量时,执行切换动作。
  • expire_logs_days :控制二进制日志文件保留天数,默认值为0,表示不自动删除,可设置为0~99。

binlog默认情况下是不开启的,不过一般情况下,建议开启,特别是要做主从同步时。

# binlog 相关配置
vim /etc/my.cnf 
[mysqld]
server-id = 1003306
log-bin = /data/mysql/logs/binlog
binlog_format = row
expire_logs_days = 15

5.中继日志(relay log)

中继日志用于主从复制架构中的从服务器上,从服务器的 slave 进程从主服务器处获取二进制日志的内容并写入中继日志,然后由 IO 进程读取并执行中继日志中的语句。

relay log 相关参数一般在从库设置,几个相关参数介绍如下:

  • relay_log :定义 relay log 的位置和名称。
  • relay_log_purge :是否自动清空不再需要中继日志,默认值为1(启用)。
  • relay_log_recovery :当 slave 从库宕机后,假如 relay log 损坏了,导致一部分中继日志没有处理,则自动放弃所有未执行的 relay log ,并且重新从 master 上获取日志,这样就保证了 relay log 的完整性。默认情况下该功能是关闭的,将 relay_log_recovery 的值设置为1可开启此功能。

relay log 默认位置在数据文件的目录,文件名为 host_name-relay-bin,可以自定义文件位置及名称。

# relay log 相关配置,从库端设置
vim /etc/my.cnf 
[mysqld]
relay_log = /data/mysql/logs/relay-bin
relay_log_purge = 1
relay_log_recovery = 1

总结:

本篇文章主要讲述了 MySQL 中的几类日志的用途及设置方法,需要注意的是,上述几类日志,若不指定绝对路径,则默认保存在数据目录下,我们也可以新建一个日志目录专用于保存这些日志。还有 redo log 和 undo log 没有讲解,留在下篇文章吧。

到此这篇关于MySQL中常见的几种日志的文章就介绍到这了,更多相关MySQL常见日志内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • MySQL中导出用户权限设置的脚本分享

    MySQL中导出用户权限设置的脚本分享

    这篇文章主要介绍了MySQL中导出用户权限设置的脚本分享,本文通过导出mysql.user表中数据实现导出权限设置,需要的朋友可以参考下
    2014-10-10
  • MySQL可以使用斜线来当字段的名字

    MySQL可以使用斜线来当字段的名字

    无意中发现MySQL可以使用斜线来当字段的名字,下面有个示例,需要的朋友可以参考下
    2014-03-03
  • 基于mysql中delete的语法别名问题

    基于mysql中delete的语法别名问题

    这篇文章主要介绍了mysql中delete的语法别名问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-09-09
  • 浅析drop user与delete from mysql.user的区别

    浅析drop user与delete from mysql.user的区别

    本篇文章是对drop user与delete from mysql.user的区别进行了详细的分析介绍,需要的朋友参考下
    2013-06-06
  • MyBatis-Plus查询不到数据但使用SQL可以查询到数据的问题排查解决

    MyBatis-Plus查询不到数据但使用SQL可以查询到数据的问题排查解决

    在使用MyBatis-Plus时,有时会出现查询不到数据的问题,而直接执行SQL却能查询到数据,本文将介绍如何排查和解决这一问题,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2024-09-09
  • Mysql添加外键的两种方式详解

    Mysql添加外键的两种方式详解

    外键可以保持数据一致性,完整性,主要目的是控制存储在外键表中的数据,下面这篇文章主要给大家介绍了关于Mysql添加外键的两种方式,需要的朋友可以参考下
    2023-04-04
  • Mysql-binlog的查看实践

    Mysql-binlog的查看实践

    MySQL的二进制日志可以说是MySQL最重要的日志了,它记录了所有的DDL和DML语句,本文主要介绍了Mysql-binlog的查看实践,具有一定的参考价值,感兴趣的可以了解一下
    2023-12-12
  • MySQL命令执行sql文件的方法小结

    MySQL命令执行sql文件的方法小结

    本文给大家分享MySQL命令执行sql文件的两种方法,每种方法给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2023-11-11
  • MySQL如何支撑起亿级流量

    MySQL如何支撑起亿级流量

    当每天新增数据上亿级的时候,单表数据量在百万级别,数据库服务器的高峰期写入压力、查询压力在都很高的时候,该如何让MySQL顺利支撑起来呢?本片文章将教给你详细的方案
    2021-09-09
  • mysql获取排列序号的三种常用方法小结

    mysql获取排列序号的三种常用方法小结

    这篇文章主要介绍了mysql获取排列序号的三种常用方法,并通过代码示例和图文给大家介绍的非常详细,对大家的学习或工作有一定的帮助,需要的朋友可以参考下
    2024-03-03

最新评论