我有一个具有二进制记录活动的MySQL服务器。一旦每天的日志文件“旋转”,即MySQL似乎停止写入并创建新的日志文件。例如,我目前在/var/lib/mysql中有这些文件

-rw-rw---- 1 mysql mysql 10485760 Jun  7 09:26 ibdata1
-rw-rw---- 1 mysql mysql  5242880 Jun  7 09:26 ib_logfile0
-rw-rw---- 1 mysql mysql  5242880 Jun  2 15:20 ib_logfile1
-rw-rw---- 1 mysql mysql  1916844 Jun  6 09:20 mybinlog.000004
-rw-rw---- 1 mysql mysql 61112500 Jun  7 09:26 mybinlog.000005
-rw-rw---- 1 mysql mysql 15609789 Jun  7 13:57 mybinlog.000006
-rw-rw---- 1 mysql mysql       54 Jun  7 09:26 mybinlog.index

和mybinlog.000006正在增长。

我可以简单地使用mybinlog.000004和mybinlog.000005,将它们拉动并转移到另一台服务器上,或者我以前需要做其他事情?

mybinlog.index中存储了哪些信息?仅有关最新二进制日志的信息?

更新: 我了解我可以使用更新mybinlog.index文件的清除二进制日志删除日志。但是,我需要在删除另一台计算机之前将日志传输到另一台计算机(我测试备份是否在另一台计算机上有效)。为了减少传输尺寸,我希望将文件bzip2。如果日志文件不再存在,将清除二进制日志会做什么?

有帮助吗?

解决方案 2

我终于在MySQL网站上找到了答案。如果有人需要此信息:

在MySQL 5.0.60之前,在以前的方式清除并清除二进制日志并没有以相同的方式(并且在.Index文件中列出了.INDEX文件中列出的二进制日志文件中列出了系统中删除了系统中的二进制日志文件时,都没有以其他方式从系统中删除。 (例如在Linux上使用RM)。从MySQL 5.0.60开始,在这种情况下,该语句的两个变体都失败了。 (错误#18199,错误#18453)要处理此类错误,请手动编辑.Index文件(这是一个简单的文本文件),以确保它仅列出实际存在的二进制日志文件,然后再次运行清除二进制日志失败的陈述。

这意味着我应该手动编辑.Index文件,一切都会好起来的。有趣的是,.Index文件是一个常规的文本文件。直到现在我什至没有注意到这一点。

其他提示

您可以删除旧的二进制日志。使用mysql statement不是直接删除它们,而是更安全 PURGE BINARY LOGS 还会更新您的 mybinlog.index 文件。此文件存储的文件名已用于二进制记录,请参阅

http://dev.mysql.com/doc/refman/5.0/en/purge-binary-logs.html

此外,您可以配置MySQL-Server以自动删除旧的二进制日志。设置变量 max_binlog_sizeexpire_logs_days 在您的服务器配置中以适当的值。

ibdataib_logfile 文件与二进制记录无关。它们由InnoDB存储引擎使用。不要因为它们似乎不会增长的事实而误解:如果您在服务器上有InnoDB-table,则这些文件很重要,并且删除它们可能会导致数据丢失。您可以在文档中阅读有关InnoDB的更多信息:

http://dev.mysql.com/doc/refman/5.0/en/innodb-configuration.html

mysql> PURGE BINARY LOGS BEFORE NOW() - INTERVAL 3 DAY; 

在3天之前删除所有bin文件!

或者

PURGE MASTER LOGS BEFORE '2010-10-08 00:00:00';

mysql-bin.index通常携带所有.bin文件。如果您删除了一些文件,请编辑.INDEX以反映所有可用的文件。如果您已删除所有.bin文件,则删除了.INDEX文件。这将解决您的问题。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top