序言

后面我们借此介绍了MySQL中的slowquerylog慢查询日志、binlog二补码日志、relaylog中继日志、redolog重做日志、undolog回滚日志、generallog通用日志,如今我们来看下MySQL中的最后一个日志,也是最简单的一个日志:errorlog错误日志。

查看日志命令linux_linux查看log日志命令_linux查看日志命令详解

哪些是errorlog

Errorlog记录中MySQL启动和关掉服务的时侯详尽的日志信息,包括在MySQL实例在运行过程中遇见的错误、警告等信息也会记录在errorlog中。须要注意的是,这儿的错误和警告并不是指我们在执行个别SQL句子的时侯遇见的错误信息和警告信息,而是MySQL底层进程级别的错误和警告信息。

对于errorlog,我们平常使用得最多的场景是这样的:在为了满足个别需求的时侯,我们须要添加或更改f配置文件中参数,之后重试重启MySQL实例linux查看log日志命令,假如此时MySQL启动失败,我们会时常去看下errorlog中的错误提示信息,之后按照错误提示去做对应的调整。最后再度尝试重启MySQL服务。此时的errorlog会给我们提供很大的帮助。

查看日志命令linux_linux查看log日志命令_linux查看日志命令详解

errorlog的参数

linux查看log日志命令_查看日志命令linux_linux查看日志命令详解

涉及到errorlog的参数,有如下几个,下边分别列举并给出解释。

log_error:这个参数控制着错误日志究竟输出到那里。假如是输出到控制嘉义,则该参数的值stderr,这表示是standarderror,标准错误输出,也就是会把errorlog讲到当前的命令行控制台北。假如不是把错误日志输出到stderr,则须要配置一个具体的文件路径和名称。诸如把错误日志输出到/tmp/mysql_error.log文件中。此时我们定义了路径为/tmp,错误日志的文件名称为mysql_error.log。通常情况下,在使用yum和apt-get形式安装MySQL数据库的时侯,MySQL的errorlog通常都是默认输出到/var/log/mysql目录下。log_error_verbosity:这个参数控制着errorlog的输出级别。参数取值为1、2、3中的其中一个值,默认值为3。建议使用默认值3。三个参数所代表的日志级别如下:1:只输出error级别的日志到errorlog中。2:输出error和warning级别的日志到errorlog中。3:输出error和warning还有note级别的日志到errorlog中。

linux查看日志命令详解_linux查看log日志命令_查看日志命令linux

errorlog的输出级别

log_timestamps:这个参数控制着日志文件中输出的每一行日志中的时间戳是哪些样的。这个参数的默认值为UTC,假如发觉日志文件中时间戳和当前数据库服务器的系统时间不一致(这儿说一个我时常遇见的问题,就是发觉所有的日志信息,都是和服务器的时间差8个小时,就是由于log_timestamps参数的值为UTC,把它改为system以后,发觉日志中时间戳就和当前系统时间一致了。),一般须要更改这个参数为SYSTEM,更改后,此时的日志总的时间戳就和服务器的系统时间一致了。这个参数不仅仅适用于errorlog,像上面我们介绍的slowquerylog慢查询日志中时间戳也是受这个参数控制。

linux查看log日志命令_查看日志命令linux_linux查看日志命令详解

查看日志命令linux_linux查看日志命令详解_linux查看log日志命令

更改errorlog日志目录

在我们了解了errorlog的一些参数以后,如今我们来更改一下那些参数来体会一下errorlog日志的参数功能。

首先看一下我的这个MySQL默认配置的errorlog输出到那儿。通过如下命令查看参数的值。

mysql> show variables like '%error%';
+---------------------+--------------+
| Variable_name       | Value        |
+---------------------+--------------+
| binlog_error_action | ABORT_SERVER |
| error_count         | 0            |
| log_error           | stderr       |/*stderr为当前的log_error的参数,日志会输出到标准输出*/
| log_error_verbosity | 3            |
| max_connect_errors  | 100          |
| max_error_count     | 64           |
| slave_skip_errors   | OFF          |
+---------------------+--------------+
7 rows in set (0.00 sec)

从前面的查询结果可以看出,当前的输出为stderr,表示我的这个MySQL日志会把日志输出到标准错误输出中。由于我的这个MySQL是使用docker容器启动的。所以这个errorlog默认是如此配置的。这样当我们启动这个容器的时侯,假如启动失败,就可以使用dockerlogs容器ID来查看具体启动MySQL服务的日志了。

如今我们更改一下errolog的储存目录。更改f配置文件,在[mysqld]下边降低如下配置:

[mysqld]
# 错误日志的配置
log_error=/tmp/mysql_error.log

配置好以后linux学习,我们重启MySQL容器后,发觉在对应的日志目录下边,生成了我们配置的errorlog文件。

这儿一定要注意:在把errorlog更改为其他目录的时侯,一定要保证这个目录的权限,对mysql:mysql这个用户和组来说,是可以读写的。否则配置好以后,可能会由于没有权限造成启动MySQL服务失败。假如由于权限启动失败,可以尝试使用如下命令给MySQL的相关用户授权,授权后,再度尝试重启MySQL服务。

# 把'/'跟目录下面的abc目录已经其下的所有子目录的所属者,改为mysql用户。
chown -R mysql:mysql /abc

更改参数后,发觉errorlog早已根据我们的配置生成,结果如下:

root@test:/tmp# pwd
/tmp
root@test:/tmp# ls -lstr
total 20
 4 -rw-r--r-- 1 root  root    985 Jan 13 17:21 mysql_general_log.log.bak
12 -rw-r--r-- 1 mysql mysql 11966 Jan 14 15:13 mysql_general_log.log
 4 -rw-r----- 1 mysql mysql  3652 Jan 18 11:52 mysql_error.log
root@test:/tmp#

归档errorlog

假如想要把errorlog进行归档,可以执行如下的步骤来进行归档。

第一步,把errorlog日志进行重命名,下边给出了一个示例:

mv mysql_error.log mysql_error.log.bak.

第二步,在MySQL的命令行中,执行如下两个命令中任何一个,此时会在对应的errorlog目录下边重新生成一个新的errorlog日志文件,文件名称和执行mv命令之前的文件名一样。

flush logs

flush error logs

第三步,可以把我们重名后的errorlog日志文件联通到我们想要归档保存的地方。此时MySQL中的errorlog会向新生产的errorlog文件中写入。

mv mysql_error.log.bak. /your_archive_log_dir

不仅我们自动的去归档errorlog,假如你是使用yum或则apt-get的形式安装的MySQL,这么它们的errorlog默认是置于/var/log或则/var/log/mysql目录下边的linux查看log日志命令,通常它们的名称为error.log或则mysqld.log,你可能会发觉这个目录下边不仅有error.log之外,还有好多error.log.1.gz和error.log.2.gz这样的文件。那些以.gz结尾的文件,也是MySQL的errorlog,只不过是历史的归档日志文件。而这个归档操作是服务器自己做的,不是我们自己的做的。至于哪些时侯要备份日志文件,是在操作系统的配置文件:/etc/logrotate.conf上面配置的。默认是每周备份一次。

对于这些以.gz结尾的日志文件,假如你想查看,可以加压后查看,也可以使用下边的命令,不解压直接查看:

zcat /var/log/mysql/error.1.gz | more

总结

MySQL的errorlog就介绍到这儿了。这个日志是MySQL中最简单的一个日志类别。我们平常使用到它的时侯,就是当我们的MySQL数据库异常宕机了去看下有没有记录对我们有用的error信息。还有就是查看linux是什么系统,当我们更改了MySQL的配置参数以后,启动MySQL失败了,去看下errorlog提示失败的缘由是哪些。其他时侯,我们对这个日志的使用就比较少了。

linux查看日志命令详解_查看日志命令linux_linux查看log日志命令

Author

这篇优质的内容由TA贡献而来

刘遄

《Linux就该这么学》书籍作者,RHCA认证架构师,教育学(计算机专业硕士)。

发表回复