Chinaunix

标题: MYSQL复制AUTO_INCREMENT的问题! [打印本页]

作者: songpure520    时间: 2009-05-09 14:30
标题: MYSQL复制AUTO_INCREMENT的问题!
我有两台数据库做了主从,主服务器为读写,从服务器只是用来备份,不对它进行任何操作。
从服务器在复制过程中出现了以下情况:
+------------+
| opid       |
+------------+
| 2030046245 |
|       9125 |
|       9124 |
|       9123 |
|       9122 |
|       9121 |
|       9120 |
|       9119 |
|       9118 |
|       9117 |

OPID是主键,是自动增长的,不知道为什么突然自动增长成这个值,复制中断,日志提示表需要修复,但是我修复表之后复制就出现主键重复的错误,主服务器的AUTO_INCREMENT正常,不知道这是不是mysql的BUG啊
系统:CENTOS5.2
MYSQL:5.1.28
MYISAM引擎
作者: 枫影谁用了    时间: 2009-05-09 14:45
错误信息是啥?
作者: songpure520    时间: 2009-05-09 14:47
090509 14:12:03 [Note] Slave SQL thread initialized, starting replication in log 'mysql-bin.001202' at position 21794, relay log './DBserver1-relay-bin.004094' position: 21939
090509 14:12:03 [ERROR] Slave SQL: Could not execute Write_rows event on table uud.order_product; Corrupted replication event was detected, Error_code: 1610; Corrupted replication event was detected, Error_code: 1610; Duplicate entry '9125' for key 'PRIMARY', Error_code: 1062; handler error HA_ERR_FOUND_DUPP_KEY; the event's master log mysql-bin.001202, end_log_pos 22448, Error_code: 1610
090509 14:12:03 [Warning] Slave: Corrupted replication event was detected Error_code: 1610
090509 14:12:03 [Warning] Slave: Corrupted replication event was detected Error_code: 1610
090509 14:12:03 [Warning] Slave: Duplicate entry '9125' for key 'PRIMARY' Error_code: 1062
090509 14:12:03 [ERROR] Error running query, slave SQL thread aborted. Fix the problem, and restart the slave SQL thread with "SLAVE START". We stopped at log 'mysql-bin.001202' position 21794
作者: songpure520    时间: 2009-05-09 14:48
他这里提示表需要修复!!但是我修复之后就会出现主键重复!即使我手工同步数据,等过段时间它还是会出现这种错误!

[ 本帖最后由 songpure520 于 2009-5-9 14:49 编辑 ]
作者: steel_lei    时间: 2009-05-09 22:40
原帖由 songpure520 于 2009-5-9 14:47 发表
090509 14:12:03 [Note] Slave SQL thread initialized, starting replication in log 'mysql-bin.001202' at position 21794, relay log './DBserver1-relay-bin.004094' position: 21939
090509 14:12:03 [E ...

如果你手工同步数据也过一段时间也出现同样的错误,建议把slave的binlog也打开

log 'mysql-bin.001202' at position 21794, relay log './DBserver1-relay-bin.004094' position: 21939

等再出现此问题时用mysqlbinlog看一下 master的 'mysql-bin.001202' at position 21794 内容 和 slave 的 DBserver1-relay-bin.004094' position: 21939的内容
作者: songpure520    时间: 2009-05-10 00:39
两者内容是一样的!!都没有记录这个表的insert语句!
作者: steel_lei    时间: 2009-05-10 01:12
标题: 回复 #6 songpure520 的帖子
再用一台服务器做slave同时同步master,看一下这个slave会出现同样问题吗

曾经遇到过类似问题,master中的一个表的主键一段时候出现错误,但repair一下就好了,后来换了mysql的版本就正常了
作者: bs    时间: 2009-05-10 01:24
是不是这个原因?参考这个
http://www.phpchina.com/bbs/viewthread.php?tid=106637
作者: songpure520    时间: 2009-05-10 18:19
我的master运行良好!!也从没出现过异常!所有的错误都是在slave上产生的!我自己尝试几次手工同步,每次一同步过来!隔断时间slave的auto字段就会暴增,就会提示修复数据库,而master并没有发生这种情况。
作者: Coolriver    时间: 2009-05-11 11:28
原帖由 songpure520 于 2009-5-9 14:47 发表
090509 14:12:03 [Note] Slave SQL thread initialized, starting replication in log 'mysql-bin.001202' at position 21794, relay log './DBserver1-relay-bin.004094' position: 21939
090509 14:12:03 [E ...


这里 090509 14:12:03 [Warning] Slave: Duplicate entry '9125' for key 'PRIMARY' Error_code: 1062

会不会这个引起的问题呢?

可以去看看为什么会引起9125 这个建重复呢?
作者: songpure520    时间: 2009-05-11 13:55
只要修复表之后就会出现主键重复这个错误!因为修复表之后启动SQL 线程  它就会读中继日志的内容,在插入表的时候!由于auto 都不一样了!所以插入键值会提示重复!
作者: Coolriver    时间: 2009-05-11 16:41
会不会是你的主从本身就不一致造成的。一般来说修复表不会出现主键不一致的。

mk-table-sync 去查一下。
作者: songpure520    时间: 2009-05-11 17:29
如果是不一致导致的话!!我手工把它搞成一致了!但是它还会出现AUTO值暴跳

[ 本帖最后由 songpure520 于 2009-5-11 17:37 编辑 ]
作者: Coolriver    时间: 2009-05-11 17:39
用的什么复制方式?
作者: songpure520    时间: 2009-05-11 17:45
默认的!
作者: songpure520    时间: 2009-05-11 23:59
我这个错误 我想应该不是应用导致的,如果应用有问题的话,那么master也会出问题!但是单单就slave出问题,有点莫名其妙!!我这个主从复制运行半年了!最近由于业务的改变,导致了数据库的变动,所以复制出错了!但是变动的也是master,master一切正常,想不通slave为什么会出错!




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2