17.3错误日志
错误日志是MySQL数据库中最常用的一种日志。错误日志主要用来记录MySQL服务的开启、关闭和错误信息。本节将为读者介绍错误日志的内容。
17.3.1启动和设置错误日志
在MySQL数据库中,错误日志功能是默认开启的。而且,错误日志无法被禁止。默认情况下,错误日志存储在MySQL数据库的数据文件夹下。错误日志文件通常的名称为hostname.err。其中,hostname表示MySQL服务器的主机名。错误日志的存储位置可以通过log-error选项来设置。将log-error选项加入到my.ini或者my.cnf文件的[mysqlld]组中。形式如下:
#my.cof(Linux操作系统下) 或者 my.ini(Windows操作系统下) [mysqld] log-error=DIR/[filename]
其中,DIR汉参数指定错误日志的路径。filename参数是错误日志的名称,没有该参数时默认为主机名。重启MySQL服务后,这个参数开始生效,可以在指定路径下看到filename.err的文件;如果没有指定filename,那么错误日志将直接默认为hostname.err。
17.3.2查看错误日志
错误日志中记录着开启和关闭MySQL服务的时间,以及服务运行过程中出现哪些异常等信息。如果MySQL服务出现异常,可以到错误日志中查找原因。
本小节将为读者介绍查看错误日志的方法。 错误日志是以文本文件的形式存储的,可以直接使用普通文本工具就可以查看。 在Windows操作系统可以使用文本文件查看器查看。在Linux操作系统下,可以使用vi工具或者使用gedit工具来查看。
【示例17-6】下面是笔者MySQL服务器的错误日志的部分内容:
091117 16:01:15 [Note] Plugin 'FEDERATED' is disabled. InnoDB: The first specified data file .\ibdata1 did not exist: InnoDB: a new database to be created! 091117 16:01:16 InnoDB: Setting file Aibdata1 size to 10 MB InnoDB: Database physically writes the file full: wait... 091117 16:01:16 InnoDB: Log file .ybJogfile0 did not exist: new to be created InnoDB: Setting log file .\ibJogflle0 size to 5 MB lnnoD8: Database physically writes the file full: wait... 091117 16:01:16 InnoDB: Log file .\ib_logfile1 did not exist: new to be created InnoDB: Setting log file .Mb_logfile1 size to 5 MB lnnoDB: Database physically writes the file full: wait... InnoDB: Doublewrite buffer not found: creating new lnnoDB: Doublewrite buffer created lnnoDB: Creating foreign key constraint system tables lnnoDB: Foreign key constraint system tables created 091117 16:01:17 lnnoDB: Started; log sequence number 0 0 091117 16:01:17 [Note] Event Scheduler: Loaded 0 events 091117 16:01:17 [Note] MySQL: ready for connections. Version: '5.1.40-communit^ socket: •• port: 3306 MySQL Community Server (GPL) 091117 16:19:23 [Note] MySQL: Normal shutdown
这些错误日志的日期为2009年11月17日。这里记载了“FEDERATED”这个功能被禁用。ib_logfile0这个文件不存在等错误信息。同时还包括了MySQL:Normalshutdown等关闭MySQL服务的信息。
17.3.3删除错误日志
数据库管理员可以删除很长时间之前的错误日志,以保证MySQL服务器上的硬盘空间。MySQL数据库中,可以使用mysqladmin命令来开启新的错误日志。mysqladmin命令的语法如下:
mysqladmin -u root -p flush-logs
执行该命令后,数据库系统会自动创建一个新的错误日志。旧的错误日志仍然保留着,只是已经更名为filename.err-old。
除了mysqladmin命令外,也可以使用FLUSH LOGS语句来开启新的错误曰志。使用该语句之前必须先登录到MySQL数据库中。创建好新的错误日志之后,数据库管理员可以将旧的错误日志备份到其他的硬盘上。如果数据库管理员认为filename.err-old已经没有存在的必要,可以直接删除。
说明:通常情况下,管理员不需要查看错误日志。但是,MySQL服务器发生异常时, 管理员可以从错误日志中找到发生异常的时间、原因。然后根据这些信息来解决异常。对于很久以前的错误日志,管理员查看这些错误日志的可能性不大,可以将这些错误日志删除。