MySQL 日志错误日志

举报
Ustinian_2022 发表于 2022/07/27 17:52:26 2022/07/27
【摘要】 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_er...

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即可。读者可自行实践,这里不再赘述。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。