归档 2011年12月

最后更新于 .

今天是年底,最近一段时间没有管服务器,下班前看了一下slave的状态,惊讶的发现已经于两个月前中断了,中断原因是执行sql语句的用户在slave机器不存在。IO:yes,SQL:no。

由于master只保存10天的binlog,所以开始我认为只能靠重建master-slave了(也就是彻底清空slave,把master库拷给slave,然后master的position归零重新开始)

等到晚上11点关站后,开始清理slave的各种文件,惊奇的发现/var/log/mysql下有很多relay.xxxx文件,用文本编辑器打开,发现竟然就是binlog。

经过确认,发现这是自SQL:no开始,从master拷贝过来的binlog文件。也就是说,即便超过了master的binlog最长保存期限,binlog也会发送至slave(前提是IO:yes),这时候只需要简单的处理错误语句,使其继续即可,例子:

slave stop;
SET GLOBAL sql_slave_skip_counter = 1;
slave start;

完成,剩下的事让mysql自己去干吧。

事后回想,binlog的最长时间干什么用?其实只要slave的IO:no(也就是网络出现问题)的时间超过了master的binlog最长时间,就回天无术了,只能重建master-slave。

每日归档

上个月

2011年11月

下个月

2012年1月

归档