我有一个主服务器和从服务器,并且奴隶停止了以下错误日志在slave中。我想解决这个问题,让两台服务器保持同步并重新开始。
111128 8:42:24 [Note] Slave I/O thread: connected to master 'repl@masterIP:3306', replication started in log 'mysql-bin.000006' at position 169
111128 15:46:50 [ERROR] Slave: Query caused different errors on master and slave. Error on master: 'Deadlock found when trying to get lock; try restarting transaction' (1213), Error on slave: 'no error' (0). Default database: 'Dbase'. Query: 'insert into archieved(eid,at,rtime,scode) select id,at,avg(rtime),scode from tstatus where date(at)="2011-10-29" group by id', Error_code: 0 111128 15:46:50 [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.000006' position 1277768
我不确定如何执行以下操作:
try restarting transaction' (1213)
注意:我在slave,IO运行和sql停止时有以下内容。我只是希望重新同步并在将来避免这种情况。
Slave_IO_State: Waiting for master to send event
Master_Host: masterIp
Master_User: repl
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.000006
Read_Master_Log_Pos: 3156089
Relay_Log_File: mysql-relay-bin.000002
Relay_Log_Pos: 1277834
Relay_Master_Log_File: mysql-bin.000006
Slave_IO_Running: Yes
Slave_SQL_Running: No
Replicate_Do_DB:
感谢。
答案 0 :(得分:1)
你必须从应用程序重启事务,mysql已经忘记了它。
当Mysql遇到死锁时,它将选择一个“胜利者”并让该线程继续,另一个线程将进行回滚,释放它的锁并获得“尝试重启事务” - 错误。
您的应用程序应尝试检测此问题并再次尝试相同的查询。希望你不会再次陷入僵局。
至于你的奴隶,我之前没有看到过这个错误而且有点混乱,我认为失败的主人的查询永远不会被写入bin日志,因此永远不会有“主从上的错误“
无论哪种方式。要解决此问题,您需要运行
SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1; START SLAVE;
这将忽略 bin日志中的第一个语句,然后重新启动服务器。无论那个声明是什么,它都不会在奴隶上运行,所以你必须手动确保之后的主表和奴隶表是相同的。
祝你好运。