如何摆脱mysql二进制日志?

Sta*_*ann 5 mysql mysql-replication

我一直在使用mysql进行开发。我不使用复制,但我想我在我以前的一台计算机上启用了二进制日志一段时间,并且我在不知不觉中积累了数百个二进制日志文件。

我现在正在使用 Linux,实际上我需要开始使用二进制日志记录。当我尝试在 my.cnf 中启用二进制日志时 - mysql 服务器没有启动,这是我在错误日志中发现的内容:

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

所以 - 我假设 - 我只需要删除旧的二进制日志 - 对吗?我可以删除所有 mysql-bin 吗?文件?我是否也必须清除 mysql-bin.index 文件?

谢谢!

kas*_*ani 3

编辑:哇,我完全误解了这个问题。是的,请确保 bin_log 被注释掉。重新开始。删除所有 bin 日志和 bin 日志索引。然后将 bin_log 添加回 my.cnf 并重新启动。我会留下我原来的答案,因为它包含一些不错的东西,特别是在#1 下。

原文:这里有几个选择。然而,通过文件系统删除 bin 日志从来都不是一个好主意,除非数据库已配置为不再生成它们。

  1. 保留 bin 日志,但偶尔会使它们过期。将expire_logs_days = 3添加到你的my.cnf中,所有Mysql服务器如果生成bin日志,都应该有这个配置。我在服务器上使用了 10 天。您可能需要在开发服务器上添加 max_binlog_size = 100M 或小于默认值 1G 的其他大小。Mysql 仅在达到最大天数最大大小后才删除 bin_logs。

  2. 完全删除 bin 日志。注释掉 my.cnf 中的 log_bin。重启Mysql,因为log_bin不是动态的。您现在可以通过文件系统进入并删除 bin 日志。

  3. 清除 bin_logs 到一定程度。从 mysql 命令行执行以下操作。您可以将这一天更改为任何适合您的日期。

    mysql> 在 DATE_SUB 之前清除二进制日志(NOW(),间隔 7 天);

在大多数情况下,我建议#1,因为有时拥有几天的 bin 日志很有用。