MySQL 日志错误日志
28.3 错误日志
MySQL的错误日志中记录了MySQL运行过程中的所有出错信息,查看MySQL的错误日志能够帮助数据库维护人员更好地排查MySQL服务器的故障。
28.3.1 开启错误日志
可以在my.cnf文件或者my.ini文件中配置开启错误日志功能。
[mysqld]
log_error = /data/mysql/log/error_log/mysql-error.log
其中,log_error表示错误日志文件的位置。如果没有为log_error赋值,则MySQL默认会在DATADIR指定的目录(MySQL的数据存放目录)下创建一个host_name.err文件来记录MySQL的错误日志。
配置成功后,需要重新开启MySQL服务器才能生效。
注意:MySQL不支持在MySQL命令行执行如下命令开启错误日志。
mysql> SET GLOBAL log_error = '/data/mysql/log/error_log/mysql-error.log';
ERROR 1238 (HY000): Variable 'log_error' is a read only variable
重新启动MySQL服务器后,查看/data/mysql/log/error_log目录下的文件。
[root@binghe150 ~]# ll /data/mysql/log/error_log/
total 4
-rw-r----- 1 mysql mysql 354 Jan 17 14:22 mysql-error.log
结果显示,data/mysql/log/error_log目录下已经成功生成了mysql-error.log文件。
28.3.2 查看错误日志
MySQL的错误日志文件是以纯文本文件的格式存储到服务器的磁盘上,可以直接查看文件的内容。
(1)向t_goods_category数据表中插入数据,并使SQL语句报错。
mysql> INSERT INTO t_goods_category
-> (id, t_category)
-> VALUES
-> ('mysql', 'mysql');
ERROR 1366 (HY000): Incorrect integer value: 'mysql' for column 'id' at row 1
(2)查看MySQL错误日志文件。
cat /data/mysql/log/error_log/ mysql-error.log
################省略n行日志#######################
2020-01-17T07:02:53.958135Z 0 [Note] InnoDB: Compressed tables use zlib 1.2.11
2020-01-17T07:02:53.959012Z 0 [Note] InnoDB: Number of pools: 1
2020-01-17T07:02:53.960377Z 0 [Note] InnoDB: Not using CPU crc32 instructions
2020-01-17T07:02:53.966535Z 0 [Note] InnoDB: Initializing buffer pool, total size = 128M, instances =
1, chunk size = 128M
2020-01-17T07:02:53.977288Z 0 [Note] InnoDB: Completed initialization of buffer pool
2020-01-17T07:02:54.060328Z 0 [Note] InnoDB: Highest supported file format is Barracuda.
2020-01-17T07:02:56.286598Z 0 [Note] InnoDB: 96 redo rollback segment(s) found. 96 redo rollback
segment(s) are active.
2020-01-17T07:02:56.287290Z 0 [Note] InnoDB: 32 non-redo rollback segment(s) are active.
2020-01-17T07:02:56.288285Z 0 [Note] InnoDB: Waiting for purge to start
28.3.3 删除错误日志
MySQL的错误日志也可以像查询日志和慢查询日志一样直接删除,如果需要重新生成日志文件,则在MySQL命令行执行FLUSH LOGS命令,在服务器命令行执行mysqladmin flush-logs命令。
(1)删除错误日志。
rm -rf /data/mysql/log/error_log/mysql-error.log
查看/data/mysql/log/error_log/目录下的文件。
[root@binghe150 ~]# ll /data/mysql/log/error_log/
total 0
结果显示,mysql-error.log文件已经被删除。
(2)刷新日志文件。
mysql> FLUSH LOGS;
Query OK, 0 rows affected (0.01 sec)
或者在服务器命令行执行如下命令刷新日志。
[root@binghe150 ~]# mysqladmin -uroot -p flush-logs
Enter password:
再次查看/data/mysql/log/error_log/目录下的文件。
[root@binghe150 ~]# ll /data/mysql/log/error_log/
total 4
-rw-r----- 1 mysql mysql 354 Jan 17 15:18 mysql-error.log
刷新日志后,MySQL会重新生成错误日志文件。
28.3.4 关闭错误日志
关闭MySQL的错误日志,只需要将my.cnf文件或者my.ini文件中的log_error配置项删除,并重新开启MySQL即可。读者可自行实践,这里不再赘述。
- 点赞
- 收藏
- 关注作者
评论(0)