分类: 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的错误.