MySQL 日志初探
目录
mysql 日志初探
零、概述
mysql 的日志分为 error log(错误日志),general query log(通用查询日志)、slow query log(慢查询日志)、binary log(binlog),各种日志各有各的用处和配置方式,接下来进行简单的介绍。
一、error log(错误日志)
错误日志记录了数据库服务器的启停、故障或异常情况及警告等信息。error log 默认开启,并可以通过 log_error 来控制 日志文件路径 或 错误日志的启停。
- log_error =
- log_error = 0 / 1 控制启停,只能为 0 or 1,未作过实验,但建议错误日志应该随时打开。
日志级别
log_error_verbosity & log_warnings
以上两个系统变量都可以用来控制错误日志的输出级别,从mysql 5.7.2开始,首选log_error_verbosity系统变量,而不是使用--log-warnings选项或log_warnings系统变量,这个参数从mysql 8.0.3开始被移除了。
log_error_verbosity (新变量)
- log_error_verbosity 为 1 错误信息。
- log_error_verbosity 为 2 错误信息和告警信息。
- log_error_verbosity 为 3 错误信息、告警信息和通知信息。
log_warnings (旧变量)
- log_warnings 为0, 表示不记录告警信息。
- log_warnings 为1, 表示告警信息写入错误日志。
- log_warnings 大于1, 表示各类告警信息,例如有关网络故障的信息和重新连接信息写入错误日志。
二、general query log(通用查询日志)
通用查询日志包含对数据库操作的所有语句,默认 关闭 ,开启 general query log 会对数据库照成一定量的性能损失,慎重开启。
通过 general_log =
通过 general_log_file =
日志共分为 4 列:
- 时间(time):操作发生的时间,有一些不显示的原因是因为这些sql语句几乎是同时执行的,所以就不另外记录时间了.
- 链接id(id):数据库链接的id,在connect操作连接到数据库时生成。
- 命令类型(command):connect就是连接数据库,记录了谁(user@host)连接了那个数据库,query就是查询数据库(增删查改都显示为查询),可以特定过虑一些操作.
- 详情(argument):命令具体所做的操作详情,可能是sql,也可能是指令或解释。
三、slow query log (慢查询日志)
慢查询日志应该是非常常用的,特别是在进行慢sql调优时。默认 关闭 。
- 通过 slow_query_log =
- 通过 slow_query_log_file =
- 通过 slow_launch_time =
- 通过 log_slow_admin_statements =
- 通过 log_slow_slave_statements =
慢查询日志共分四列:
- 时间(time): sql发生的具体时间
- 链接id(id): 表示了 谁(user@host)及 链接id。
- 概要(command): 统计了查询的耗时(query_time),加锁时间(lock_time),查询返回的行数(rows_sent),查询检察过的行数(rows_examined)。
- 详情(argument):详情里记录了此次执行的指令或sql。
四、binary log(binlog)
binarylog,从名称里可以看出,他是一种二进制日志,它主要记录了对数据进行改动,包括表、数据改动等。也包括一些潜在改动,比如 update 或 detele 执行结果对任意一条数据都没影响的这种情况(delete from table where 1 = 2)。除非使用 row-based logging,否则会包含所有改动数据的 sql statement。
作用主要有:
- 复制:mysql replication在master端开启binlog,master把它的二进制日志传递给slaves并回放来达到master-slave数据一致的目的。
- 数据恢复:通过mysqlbinlog工具恢复数据
- 增量备份: 增量备份是指在一次全备份或上一次增量备份后,以后每次的备份只需备份与前一次相比增加或者被修改的文件。
binary log在mysql中默认 关闭 。
- 通过 log_bin =
- 通过 log_bin_basename = < path / name > 系统变量控制binlog文件的 主文件名 及路径,log文件会根据切割条件自动切割为
- 通过 log_bin_index =
关于binlog的其他内容,限于篇幅,这里不展开讨论。
五、总结
以上内容在 mysql 5.7.19 下验证过,其他版本可能有细节差异,不再另表。
下表总结了几种日志类型的作用和默认开启情况。
类型 | 作用 | 默认情况 |
---|---|---|
error log | 记录了数据启停,故障,警告等信息。 | on |
general query log | 记录了所有的数据库链接、语句执行情况,开启会增加数据库负担。 | off |
slow query log | 记录了执行时间大于阈值的sql,调试执行性能相关问题时很有用。 | off |
binary log | 记录了对数据库进行改动的相关事件,主要用于复制、数据恢复、增量备份等。 | off |
六、参考
[2].
上一篇: 前端安全 xss