MySQL 日志文件分为4种:错误日志、通用查询日志、慢查询日志和二进制日志。
1.错误日志:记录MySQL 服务器的启动、运行或停止时出现的问题。
(1)启动和设置错误日志
默认情况下会开启错误日志功能,而且,错误日志无法被禁止。打开数据安装目录下的my.ini 文件找到log-error 选项进行查看,具体如下:
# Error Logging.
log-error="WS.err"
log-error 选项指定mysqld 保存错误日志文件的位置,简单语法结构如下:
log-erroe [=DIR/fire_name];
上述语法中DIR 指定错误日志的路径,fire_name 是错误日志的名称,没有该参数时默认为主机名。
(2)查询错误日志
错误日志是一个文本文件,在该日志中记录着开启和关闭 MySQL 服务的时间,以及服务运行过程中的错误、警告和异常信息等。如果 MySQL 服务出现异常,可以打开错误日志查看原因。
(3)删除错误日志
MySQL 数据库可以使用两种方式开启新的错误日志:mysqladmin 命令和 FLUSH LOGS 语句。mysqladmin 命令的语法结构如下:
mysqladmin -u root -p flash-logs
执行上述命令完成后会自动创建一个新的错误日志,但是旧的错误日志会仍然保留着,只是对它的名称进行更改,在名称之后添加-old 内容。
直接执行FLUSH LOGS 语句之前必须先登录到 MySQL 数据库中,这样创建好新的错误日志以后,数据库管理员可以将旧的错误日志备份到其他的硬盘上,如果旧的错误日志已经没有存在的必要,则可以直接删除。
2.通用查询日志:记录用户登录和查询的信息。
通用查询日志通常会被称为一般查询日志或普通查询日志,它用来记录用户的所有操作,包括启动和关闭 MySQL 服务、更新语句和查询语句等。默认情况下,通用查询日志功能是关闭的。可以通过 SHOW GLOBAL VARIABLES 语句查询是否已经启用。语句和输出结果如下:
mysql> SHOW GLOBAL VARIABLES LIKE ‘%general%‘;
+---------------------------------------------+--------+
| Variable_name | Value |
+---------------------------------------------+--------+
| general_log | OFF |
| general_log | WS.log |
+---------------------------------------------+--------+
2 rows in set (0.00 sec)
3.慢查询日志:记录所有的执行时间超过指定时间的所有查询或不使用索引的查询。
(1)启动慢查询日志
默认情况下,慢查询日志功能是关闭的。可以直接通过 SHOW VARIABLES 语句查看慢查询配置。执行语句和输出结果如下:
mysql> show variables like ‘%slow%‘;
+------------------------------------------------+------------------------+
| Variable_name | Value |
+------------------------------------------------+------------------------+
| log_show_admin_statements | OFF |
| log_slow_slave_statements | OFF |
| slow_launch_time | 2 |
| slow_query_log | OFF |
| slow_query_log_fire | WS-slow.log |
+------------------------------------------------+------------------------+
5 rows in set (0.00 sec)
4.二进制日志:以二进制文件形式记录了数据库中的操作,但是不记录查询语句。
(1)启用二进制日志
my.ini 文件中的 log-bin 选项可以开启或关闭二进制日志。my.ini 文件中的代码如下:
# Binary Logging.
# log-bin
于错误日志不同,默认情况下,二进制日志功能是关闭的,如果要开启它的功能,可以将 log-bin 选项前的“#“”去掉,然后为 log-bin 选项指定参数值。语法结构如下:
log-bin [= DIR\[firename]]
(2)查看二进制日志
二进制日志是以二进制方式存储的,因此它并不能直接读取。如果要查看二进制日志的内容,必须使用 mysql 自带的 mysqlbinlog 命令工具进行查看。执行该命令时必须指定查看二进制日志文件的路径,否则将会找不到指定的二进制文件。
(3)清理二进制日志
常见的几种清理二进制日志文件的方法:
1.删除所有二进制文件,语法如下:
RESET MASTER;
2.根据编号进行删除,语法如下:
PURGE MASTER LOGS TO ‘firename.number‘;
3.根据创建时间进行删除,语法如下:
PURGE MASTER LOGS BEFORE ‘yyyy-mm-dd hh:mm:ss‘;
(4)恢复二进制日志,语法如下:
mysqlbinlog firename.number | mysql -u root -p