MySQL错误日志
作为初学者,要学会利用错误日志来定位问题。下面介绍如何操作查看错误日志。
启动和设置错误日志
在 MySQL 数据库中,默认开启错误日志功能。一般情况下,错误日志存储在 MySQL 数据库的数据文件夹下,通常名称为 hostname.err。其中,hostname 表示 MySQL 服务器的主机名。在 MySQL 配置文件中,错误日志所记录的信息可以通过 log-error 和 log-warnings 来定义,其中,log-err 定义是否启用错误日志功能和错误日志的存储位置,log-warnings 定义是否将警告信息也记录到错误日志中。
将 log_error 选项加入到 MySQL 配置文件的 [mysqld] 组中,形式如下:
[mysqld]
log-error=dir/{filename}
重启 MySQL 服务后,参数开始生效,可以在指定路径下看到 filename.err 的文件,如果没有指定 filename,那么错误日志将直接默认为 hostname.err。
注意:错误日志中记录的并非全是错误信息,例如 MySQL 如何启动 InnoDB 的表空间文件、如何初始化自己的存储引擎等,这些也记录在错误日志文件中。
查看错误日志
错误日志中记录着开启和关闭 MySQL 服务的时间,以及服务运行过程中出现哪些异常等信息。如果 MySQL 服务出现异常,可以到错误日志中查找原因。在 MySQL 中,通过 SHOW 命令可以查看错误日志文件所在的目录及文件名信息。
mysql> SHOW VARIABLES LIKE 'log_error'; +---------------+----------------------------------------------------------------+ | Variable_name | Value | +---------------+----------------------------------------------------------------+ | log_error | C:\ProgramData\MySQL\MySQL Server 5.7\Data\LAPTOP-UHQ6V8KP.err | +---------------+----------------------------------------------------------------+ 1 row in set, 1 warning (0.04 sec)错误日志以文本文件的形式存储,直接使用普通文本工具就可以查看。这里通过记事本打开,从上面可以知道错误日志的文件名。该文件在默认的数据路径“C:\ProgramData\MySQL\MySQL Server 5.7\Data\”下,打开 LAPTOP-UHQ6V8KP.err 文件,部分内容如下:
190906 22:06:45 InnoDB: Completed initialization of buffer pool
190906 22:06:45 InnoDB: highest supported file format is Barracuda.
190906 22:06:45 InnoDB: Waiting for the background threads to start
190906 22:06:46 InnoDB: 5.7.29 started; log sequence number 1605345
190906 22:06:47 [Note] Server hostname (bind-address): '0.0.0.0'; port: 3306
190906 22:06:47 [Note] - '0.0.0.0' resolves to '0.0.0.0';
190906 22:06:47 [Note] Server socket created on IP: '0.0.0.0'.
190906 22:06:47 [Note] Event Scheduler: Loaded 0 events
190906 22:06:47 [Note] /usr/sbin/mysqld: ready for connections.
Version: '5.7.29-log' socket: '/var/lib/mysql/mysql.sock' port: 3306 MySQL Community Server (GPL)
删除错误日志
在 MySQL 中,可以使用 mysqladmin 命令来开启新的错误日志,以保证 MySQL 服务器上的硬盘空间。mysqladmin 命令的语法如下:mysqladmin -uroot -p flush-logs
执行该命令后,MySQL 服务器首先会自动创建一个新的错误日志,然后将旧的错误日志更名为 filename.err-old。MySQL 服务器发生异常时,管理员可以在错误日志中找到发生异常的时间、原因,然后根据这些信息来解决异常。对于很久之前的错误日志,查看的可能性不大,可以直接将这些错误日志删除。