MySQL错误日志的启动、查看和删除(附带实例)
错误日志文件包含了当 MySQL 启动和停止时,以及服务器在运行过程中发生任何严重错误时的相关信息。
在 MySQL 中,错误日志也是非常有用的,MySQL 会把启动和停止数据库信息以及一些错误信息记录到错误日志文件中。
例如,MySQL 所在的服务器主机名为 MySQL-db,记录错误信息的文件名为 MySQL-db.err。如果执行了 FLUSH LOGS,错误日志文件会重新加载。
错误日志的启动和停止以及指定日志文件名都可以通过修改 my.ini(或者 my.cnf)来配置。错误日志的配置项是 log-error。在 [mysqld] 下配置 log-error,则启动错误日志。
如果需要指定文件名,则配置项如下:
MySQL 错误日志是以文本文件的形式存储的,可以使用文本编辑器直接查看 MySQL 错误日志。
如果不知道日志文件的存储路径,可以使用SHOW VARIABLES语句查询错误日志的存储路径。SHOW VARIABLES 语句如下:
对于 MySQL 5.5.7 以前的版本,flush logs 可以将错误日志文件重命名为 filename.err_old,并创建新的日志文件。但是从 MySQL 5.5.7 开始,flush logs 只是重新打开日志文件,并不做日志备份和创建的操作。如果日志文件不存在,MySQL 启动或者执行 flush logs 时会创建新的日志文件。
在运行状态下删除错误日志文件后,MySQL 并不会自动创建日志文件。flush logs 在重新加载日志的时候,如果文件不存在,则会自动创建。所以在删除错误日志之后,如果需要重建日志文件,需要在服务器端执行以下命令:
在 MySQL 中,错误日志也是非常有用的,MySQL 会把启动和停止数据库信息以及一些错误信息记录到错误日志文件中。
MySQL启动和设置错误日志
在默认情况下,错误日志会记录到数据库的数据目录下。如果没有在配置文件中指定文件名,则文件名默认为 hostname.err。例如,MySQL 所在的服务器主机名为 MySQL-db,记录错误信息的文件名为 MySQL-db.err。如果执行了 FLUSH LOGS,错误日志文件会重新加载。
错误日志的启动和停止以及指定日志文件名都可以通过修改 my.ini(或者 my.cnf)来配置。错误日志的配置项是 log-error。在 [mysqld] 下配置 log-error,则启动错误日志。
如果需要指定文件名,则配置项如下:
[mysqld] log-error=[path / [file_name] ]path 为日志文件所在的目录路径,file_name 为日志文件名。修改配置项后,需要重启 MySQL 服务以生效。
MySQL查看错误日志
通过错误日志可以监视系统的运行状态,便于及时发现故障、修复故障。MySQL 错误日志是以文本文件的形式存储的,可以使用文本编辑器直接查看 MySQL 错误日志。
如果不知道日志文件的存储路径,可以使用SHOW VARIABLES语句查询错误日志的存储路径。SHOW VARIABLES 语句如下:
SHOW VARIABLES LIKE 'log_error';【实例】使用记事本查看 MySQL 错误日志。首先,通过 SHOW VARIABLES 语句查询错误日志的存储路径和文件名:
mysql> SHOW VARIABLES LIKE 'log_error'; +---------------+-----------------------+ | Variable_name | Value | +---------------+-----------------------+ | log_error | .\X0NHUNO7YDZVSSI.err | +---------------+-----------------------+ 1 row in set (0.00 sec)可以看到错误的文件是 X0NHUNO7YDZVSSI.err,位于 MySQL 默认的数据目录下。使用记事本打开该文件,可以看到 MySQL 的错误日志:以上是错误日志文件的一部分,这里面记载了系统的一些错误。
190130 16:45:14 [Note] Plugin 'FEDERATED' is disabled. 190130 16:45:14 InnoDB: The InnoDB memory heap is disabled 190130 16:45:14 InnoDB: Mutexes and rw_locks use Windows interlocked functions 190130 16:45:14 InnoDB: Compressed tables use zlib 1.2.3 190130 16:45:15 InnoDB: Initializing buffer pool, size = 46.0M 190130 16:45:15 InnoDB: Completed initialization of buffer pool 190130 16:45:15 InnoDB: highest supported file format is Barracuda. 190130 16:45:15 InnoDB: Waiting for the background threads to start 190130 16:45:16 InnoDB: 1.1.7 started; log sequence number 1679264 190130 16:45:16 [Note] Event Scheduler: Loaded 0 events 190130 16:45:16 [Note] C:\Program Files\MySQL\MySQL Server 8.0\bin\MySQLd: ready for connections. Version: '8.0.28-log' socket: '' port: 3306 MySQL Community Server (GPL)
MySQL删除错误日志
MySQL 的错误日志是以文本文件的形式存储在文件系统中的,可以直接删除。对于 MySQL 5.5.7 以前的版本,flush logs 可以将错误日志文件重命名为 filename.err_old,并创建新的日志文件。但是从 MySQL 5.5.7 开始,flush logs 只是重新打开日志文件,并不做日志备份和创建的操作。如果日志文件不存在,MySQL 启动或者执行 flush logs 时会创建新的日志文件。
在运行状态下删除错误日志文件后,MySQL 并不会自动创建日志文件。flush logs 在重新加载日志的时候,如果文件不存在,则会自动创建。所以在删除错误日志之后,如果需要重建日志文件,需要在服务器端执行以下命令:
mysqladmin -u root -p flush-logs或者在客户端登录 MySQL 数据库,执行 flush logs 语句:
mysql> flush logs; Query OK, 0 rows affected (0.23 sec)