Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2353745
  • 博文数量: 276
  • 博客积分: 5998
  • 博客等级: 大校
  • 技术积分: 5175
  • 用 户 组: 普通用户
  • 注册时间: 2010-12-24 14:43
文章分类

全部博文(276)

文章存档

2014年(25)

2013年(11)

2012年(69)

2011年(167)

2010年(4)

分类: Mysql/postgreSQL

2011-11-03 15:29:48

出现这个问题的原因是:

slave在记录复制信息和状态的时候是   master.info 和   relay-log.info
slave SQL thread 从 relay log里面读取事件,然后更新这2个文件
这里存在问题的,如果 slave mysqld 在执行完sql语句之后,还未来得及更新上述文件的时候中止了
那么在slave重启之后,最后执行的sql语句将重复,这时候造成重复数据的产生。


解决办法:

1、可以打上google提供的补丁,可以避免这种情况出现
2、找出slave上重复数据,删除掉,然后再stop slave start slave,这样就能够正常复制了,而且数据也是同步的,一致的。
3、假如只是一两条错误, 机器也很少, 哪倒是无所谓, 用下面的方法就可以了.
mysql>SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
mysql>slave start;

4、当你有很多繁忙的数据库, 维护总是让你很忙的时候. 假如在数据要求不是那么高的时候, 也有一个方法让你没有烦恼, 在slave的my.cnf里面写入.
slave-skip-errors = 1062
启动后它将会忽略所有类型为1062的错误.

阅读(1311) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~