概述
MySQL 日志是 MySQL 的重要组成部分。有以下数种:
启动和设置
在 MySQL 数据库中,默认开启错误日志。
在 MySQL 配置文件中,错误日志所记录的信息可以通过 log-error 和 log-warnings 来定义。其中 log-error 定义是否启用和存储位置,log-warnings 定义是否将警告信息也包含入内。
删除
可以使用 mysqladmin 来开启新的错误日志
1 | mysqladmin -uroot -p flush-logs |
执行该日志后,MySQL 服务器首先会自动创建一个新的错误日志,然后将旧的错误日志更名为 filename.err-old。
二进制日志
Binary Log,也通常叫做更新日志(Update Log)。主要记录数据库的变化情况,即SQL的DDL和DML语句,不包含数据记录查询操作。
如果 MySQL 意外停止,可以通过二进制日志文件来查看用户执行了哪些操作等,然后根据文件中的记录来恢复数据库服务器。
默认情况下,二进制日志功能是关闭的。
启动和设置
在 MySQL 中,可以通过在配置文件中添加 log-bin 选项来开启二进制日志。
1 | log-bin=dir/[filename] |
每次重启 MySQL 服务后,都会生成一个新的二进制日志文件,这些文件的 filename 都不会变,number 会依次递增。
除了 filename.number 文件以外,MySQL 还会生成一个 filename.index 文件这个文件存储着所有二进制日志文件的列表。
删除
1 | 删除所有二进制日志文件 |
使用二进制日志文件恢复数据库
1 | mysqlbinlog filename.number | mysql -u root -p |
还原时需要注意,必须是编号(number)小的先还原。
通用查询日志
General Query Log,日志记录用户的所有操作,包括启动和关闭 MySQL 服务,更新语句和查询语句等。
启动和设置
默认情况下,通用查询日志是关闭的。
可以在 MySQL 配置文件添加 log 选项来开启通用查询日志。
停止
由于通用查询日志会记录用户的所有操作,如果数据库的使用非常频繁,通用查询日志将会占用非常大的磁盘空间,对系统性能影响较大。
慢查询日志
Slow Query Log,慢查询日志用来记录在 MySQL 中执行时间超过指定时间的查询语句。通过慢查询日志,可以查找出哪些查询语句的执行效率低,以便进行优化。
启动和设置
默认情况下,慢查询日志功能是关闭的。
可以通过配置文件设置 log-slow-queries 选项开启慢查询日志。long_query_time 选项来设置时间值,时间以秒为单位。如果查询时间超过了这个时间值,这个查询语句将被记录到慢查询日志。
还可以通过以下命令启动慢查询日志、设置指定时间:
1 | SET GLOBAL slow_query_log=ON/OFF; |
删除
1 | mysqladmin -uroot -p flush-logs |
需要注意,通用查询日志和慢查询日志的删除都是这个语句,使用时一旦执行此命令,就会将旧的日志文件覆盖,如果需要备份旧的日志文件,就必须拷贝或改名,然后再执行。