我一直在使用 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.
所以 - 我假设 - 我只需要删除旧的二进制日志 - 对吗?我可以删除所有 mysql-bin. 文件吗?我是否也必须清除 mysql-bin.index 文件?
谢谢!
答案1
编辑:哇哦,我完全误读了这个问题。是的,确保 bin_log 被注释掉。重新启动。删除所有 bin 日志和 bin 日志索引。然后将 bin_log 添加回 my.cnf 并重新启动。我将保留我原来的答案,因为它包含一些不错的东西,尤其是在 #1 下。
原文:您在这里有几个选择。但是,通过文件系统删除 bin 日志永远不是一个好主意,除非数据库已配置为不再生成它们。
保留 bin 日志,但偶尔会使其过期。将 expire_logs_days = 3 添加到 my.cnf,如果所有 Mysql 服务器生成 bin 日志,则它们都应具有此配置。我在我的服务器上使用 10 天。您可能需要在开发服务器上添加 max_binlog_size = 100M 或小于默认值 1G 的其他大小。Mysql 仅在达到最大天数后才会删除 bin_logs和最大尺寸。
彻底删除 bin 日志。注释掉 my.cnf 中的 log_bin。重新启动 Mysql,因为 log_bin 不是动态的。现在,您可以通过文件系统进入并删除 bin 日志。
清除 bin_logs 直至某个点。从 mysql 命令行执行以下操作。您可以将日期更改为适合您的任何日期。
mysql> 清除 DATE_SUB 之前的二进制日志(NOW(),间隔 7 天);
大多数情况下我推荐#1,因为有时几天的 bin 日志很有用。