6.2 管理日志文件

日志对于MySQL来说非常重要,通过日志,可以记录对MySQL的历史操作,还可以同数据库备份一起数据恢复。

6.2.1 生成日志文件

MySQL生成下列两种类型的日志文件。

● 常规日志文件:记录客户机的连接、查询和其他事件,跟踪服务器的活动:谁正在连接、从哪里连接,以及正在做什么。

● 更新日志:记录数据库的所有更新操作,包括DELETE、INSERT、REPLACE、CREATE TABLE、DROP TABLE、GRANT和REVOKE等操作。

日志文件默认写到服务器的数据目录中。更新日志以SQL语句的形式书写,可以直接作为mysql的输入。在服务器崩溃后恢复表的时候,更新日志与备份是很有用的。可以首先从备份文件中恢复数据库,然后通过将更新日志输入mysql,重新运行在该备份文件之后又对数据库做的修改命令,可将数据恢复到崩溃时刻的状态。

为了使日志有效,需使用--log选项开启常规日志,使用--log-update选项开启更新日志。可以使用mysqld.safe_mysqld或mysql.server客户机,在其选项中指定开启这些选项。

6.2.2 循环利用日志文件

前面介绍了如何开启MySQL的日志,不难想到一个问题:日志经年累月的写,会不会造成文件膨胀,导致因硬盘空间大量使用从而引起系统缓慢或崩溃?

MySQL通过循环利用日志文件来解决这个问题,避免日志文件无边界地增长,同时又能保证最近的几个日志是可用的。例如,如果每天都循环记录,并且只想保持一周的日志,则应保留log.0到log.6的日志文件。在下一周的循环中,通过让log.0覆盖原来的log.0,便实现了日志文件的循环利用。

日志循环频率和旧日志数量依赖于服务器的繁忙程度,以及希望为旧日志投入多少磁盘空间。当循环常规日志时,可以用命令告诉服务器关闭当前日志文件,并打开新日志文件。

    mysqladmin flush-logs