从你的问题的事实
>二进制日志无法转出
>你说你可以运行PURGE BINARY LOGS
这是我的工作理论
既然你可以使用PURGE BINARY LOGS来擦除二进制日志,我有两个地方可以看出你没有提到
PLACE#1:mysql-bin.index
此文件包含所有二进制日志的位置.当设置expire_logs_days时,mysqld将打开此文本文件,检查每个文件中的datetime标记,直到遇到时间戳小于NOW() – INTERVAL expire_logs_days DAY的二进制日志为止.
预期mysql-bin.index中的二进制日志在数字上是连续的.如果二进制日志不是数字连续的,则日志轮换被禁用.
PLACE#2:/ var / log / mysql文件夹
根据您的my.cnf,此文件夹包含所有二进制日志.
这里有两个问题:
> / var / log / mysql中没有数字连续的任何二进制日志?
> / var / log / mysql中是否有任何二进制日志不在mysql-bin.index中?
为什么会出现这种情况?
有时,人们会在操作系统中删除二进制日志.这可以抛弃mysqld,因为mysqld使用mysql-bin.index来内部跟踪二进制日志的存在.简单地删除二进制日志与rm -f逻辑打破日志循环机制,mysqld知道它.
建议
如果是这两种情况,可以按照以下方式进行清理:
mysql -ANe"RESET MASTER"
service mysql stop
cd /var/log/mysql
rm -f mysql-bin.*
cd
service mysql start
之后,您应该有一个品牌打屁股新的二进制日志设置.
试一试 !!!