我一直在使用mysql进行开发。 我不使用复制,但我想我已经有一段时间在我以前的计算机上启用二进制日志logging,我已经在不知不觉中积累了数百个二进制日志文件。
我现在在使用Linux,实际上我需要开始使用二进制日志logging。 当我尝试启用my.cnf中的二进制日志 – mysql服务器不启动,这是我在错误日志中find:
1 110314 14:39:40 [Note] Plugin 'FEDERATED' is disabled. 2 110314 14:39:40 InnoDB: Started; log sequence number 0 36669358 3 ^G/usr/sbin/mysqld: File '.\mysql-bin.000179' not found (Errcode: 2) 4 110314 14:39:40 [ERROR] Failed to open log (file '.\mysql-bin.000179', errno 2) 5 110314 14:39:40 [ERROR] Could not open log file 6 110314 14:39:40 [ERROR] Can't init tc log 7 110314 14:39:40 [ERROR] Aborting 8 9 110314 14:39:40 InnoDB: Starting shutdown.
所以 – 我假设 – 我只需要删除旧的二进制日志 – 对不对? 我可以删除所有的mysql-bin吗? 文件? 我需要清除mysql-bin.index文件吗?
谢谢!
编辑:哇,我完全误解了这个问题。 是的,确保bin_log被注释掉。 重新开始。 删除任何bin日志和bin日志索引。 然后将bin_log添加回my.cnf并重新启动。 我会离开我原来的答案,因为它包含一些体面的东西,特别是在#1下。
原文:这里有几个选项。 但是,通过文件系统删除bin日志永远不是一个好主意,除非数据库已经被configuration为不再生成它们。
保持斌日志,但偶尔会过期。 将expire_logs_days = 3添加到您的my.cnf中,如果它们生成bin日志,则所有的Mysql服务器都应该具有此configuration。 我在我的服务器上使用了10天。 您可能希望在开发服务器上添加max_binlog_size = 100M或其他小于默认值1G的大小。 一旦达到最大天数和最大值,Mysql只会删除bin_logs。
完全删除bin日志。 在my.cnf中注释掉log_bin。 重新启动Mysql,因为log_bin不是dynamic的。 您现在可以通过文件系统进入并删除bin日志。
清除bin_logs到某一点。 从mysql命令行执行以下操作。 你可以改变一天,无论什么适合你。
mysql>清理二进制日志在DATE_SUB(NOW(),INTERVAL 7 DAY);
在大多数情况下,我会推荐#1,因为有时会有两天的bin日志是有用的。