MySQL的垃圾箱安全删除?

他们占用太多空间:

/var/lib/mysql/jiaoyou-slow.log: 53M /var/lib/mysql/mysql-bin.000005: 68M /var/lib/mysql/mysql-bin.000003: 1.1G /var/lib/mysql/mysql-bin.000007: 34M /var/lib/mysql/mysql-bin.000004: 225M 

使用二进制日志有几个原因。 按重要程度排列:

  1. 复制 – 从站从主站的二进制日志中获取内容。
  2. 更大的备份粒度 – 重播先前备份点的日志。
  3. 查询日志logging – 比那些偶尔的“查询运行什么?”的查询日志效率更高。 时刻。

因此,在删除任何二进制日志之前,需要检查三件事情:

  1. 你有任何复制奴隶,他们是最新的?
    • 如果在从机有机会将其拉入中继日志之前删除二进制日志,则将无法继续进行复制。 也可能会有怪异的情况下,您可能需要删除中继日志和重新从主机。
  2. 你的备份在检查?
  3. 您是否需要查看在该日志logging期间执行的任何查询?

如果您对所有这些问题的答案感到满意,那么请继续前进,并使用PURGE指出的PURGE命令将其删除。 绝对不要手动删除它们,因为MySQL喜欢跟踪它们。 您可以使用语法TO来指定文件名或使用BEFORE来指定date。 你可以看到当前用SHOW MASTER STATUS打开了哪个文件。

就像凯达笔记一样,更好的方法是使用expire_logs_days 。 这将自动执行清除N天以前的任何二进制日志的操作。

不,你不应该手工删除他们有一个命令来删除他们,如果删除他们的MySQL会崩溃。 该命令是:

 PURGE BINARY LOGS TO 'mysql-bin.010'; 

在这里看到更多的信息。

在Ubuntu 12.04

清理二进制日志

把这行添加到你的/etc/mysql/my.cnf,它需要在[mysqld]部分。

expire_logs_days = 7

后:

/etc/init.d/mysql重新启动

要么:

然后login到Mysql并运行此命令来设置variables,而无需重新启动Mysql。

SET GLOBAL expire_logs_days = 7;