删除 MySQL 生成的 BIN 文件是否安全?

7 mysql cleanup logging data-recovery bin

它们占用了太多空间:

/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
Run Code Online (Sandbox Code Playgroud)

小智 13

不,您不应该手动删除它们。

如果在磁盘级别删除它们,mysql将会崩溃。

删除它们的命令是:

PURGE BINARY LOGS TO 'mysql-bin.010';
Run Code Online (Sandbox Code Playgroud)

替换mysql-bin.010mysql-bin您希望保留的最后一个文件 - 通常是最后一个。

有关更多信息,请参阅MySQL 文档


Dan*_*ley 8

使用二进制日志有几个原因。按重要性排序:

  1. 复制——从站从主站的二进制日志中吸取内容。
  2. 更大的备份粒度——在先前的备份点上重放日志。
  3. 查询日志——对于那些偶尔出现的“写什么查询运行?”比一般查询日志更有效。时刻。

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

  1. 您有任何复制从属设备并且它们是最新的吗?
    • 如果在从站有机会将其拉入中继日志之前删除二进制日志,则它将无法继续进行复制。也可能有一些奇怪的实例,您可能需要从主服务器中删除中继日志并再次进行假脱机。
  2. 您的备份是否在检查中?
  3. 您是否需要查看在该日志记录期间执行的任何查询?

如果您对所有这些问题的答案感到满意,请继续使用RageZ所述的PURGE命令删除它们。绝对不要手动删除它们,因为 MySQL 喜欢跟踪它们。您可以使用语法来指定文件名或指定日期。你可以看到 MySQL 当前打开的文件是.TOBEFORESHOW MASTER STATUS

正如kedar所说,更好的方法是使用expire_logs_days. 这将自动执行清除任何早于 N 天的二进制日志的操作。