我的MySQL主站(现在没有连接的从站)每分钟写出一个125字节的文件:
-rw-rw---- 1 mysql mysql 125 2012-12-28 16:46 snapshot-mysql-v2-bin.004876 -rw-rw---- 1 mysql mysql 125 2012-12-28 16:45 snapshot-mysql-v2-bin.004875 -rw-rw---- 1 mysql mysql 125 2012-12-28 16:43 snapshot-mysql-v2-bin.004874 -rw-rw---- 1 mysql mysql 125 2012-12-28 16:41 snapshot-mysql-v2-bin.004873
同时将实际的二进制日志内容写入一个数量低得多的文件:
-rw-rw---- 1 mysql mysql 330755915 2012-12-28 16:48 snapshot-mysql-v2-bin.004472
(当文件填满时,它会进入下一个文件)。
另外,MySQL不会将包含内容(004472)的实际文件的名称写入.index文件,所以当我连接一个slave时,它不能复制,直到我手动编辑.index文件为止。
MySQL版本是5.1.41-3ubuntu12.10-log。
有任何想法吗?
问题似乎是/ var / lib / mysql / ibdata1文件被locking,不能被MySQL写入。 在mysql.err文件中我发现了很多条目,尽pipeMySQL服务器运行良好(并且很多行被添加到了InnoDB表中)。
要解决,我必须杀死所有的mysqld实例(mysqladmin关机是不够的,让他们),然后我跑:
cp -a ibdata1 ibdatanew1
我编辑my.cnf指向ibdatanew1文件。 我再次启动了MySQL,重置了主服务器,刷新了日志,在过去的6个小时内都没问题。
我仍然不清楚ibdata1文件被locking如何使MySQL继续运行,但是也许ibdata1问题只是在编写二进制日志方面出现问题? (注意,我用来在mysqld.log中看到ibdata1问题,而不是mysql.err日志)。