4. 日志文件维护
MySQL服务在运行过程中会创建一系列的日志文件,从有效利用磁盘空间的因素考虑,DBA有必要定期对这类文件进行清理。
MySQL启用了日志记录功能,DBA可能会希望能够定期或不定期备份并移除旧的日志文件,并通知MySQL创建新的日志文件:
- 在Linux系统中,可以通过使用mysql-log-rotate脚本(默认在安装路径的/support-files/mysql-log-rotate目录下)。如果是复制环境,需要注意二进制日志文件的保护,未传播到slave端的二进制日志不能被移除。
- 其它操作系统的话,只能自己写脚本了。
对于二进制日志,MySQL提供了名为expire_logs_days系统变量,用来指定二进制日志过期时间,设置后MySQL即可以自动处理过期的二进制日志,这样对于复制环境来说也比较灵活。
可以通过flush-logs的方式强制MySQL新建二进制日志文件,比如在mysql命令行环境下执行flush logs,或者执行mysqladmin flush-logs, mysqladmin refresh, mysqldump --flush-logs, musqldump --master--data等命令。或者等到二进制日志达到max_binlog_size参数值时自动创建。
刷新日志操作遵循下列规则:
- 如果启用了查询日志记录功能,则MySQL关闭并重新打开查询日志文件;
- 如果启用了二进制日志记录功能,则MySQL关闭当前的二进制日志文件,然后按序列新建一个二进制日志;
- 如果启用了错误日志记录功能,则MySQL归档当前错误文件以-old后缀,然后创建一个新的空错误日志文件。
当执行flush-logs操作时,MySQL将创建新的二进制日志,不过,查询日志不会重新创建,linux/unix系统下只能手动改名,然后再执行flush。例如,原普通查询日志和慢查询日志分别命名为mysql.log和mysql-slow.log,通过下列步骤重建:
shell> cd mysql-data-directory
shell> mv mysql.log mysql.old
shell> mv mysql-slow.log mysql-slow.old
shell> mysqladmin flush-logs
之后,可以选择删除*.old,或再改名等等。
在5.1.3版本之前,Windows版本运行的MySQL不允许在线重命名日志文件,如果要修改,必须先停止MySQL服务,尔后再进行操作。从5.1.3版本开始,错误日志仍然不允许在线改外,不过查询日志已经支持了。
|