mysql复制死锁从站已停止

mysql复制死锁从站已停止,mysql,replication,deadlock,Mysql,Replication,Deadlock,我有一个主机和一个从机,并且在从机中记录了以下错误,从而停止了从机。我想解决这个问题,让两台服务器同步,然后重新开始。 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 d

我有一个主机和一个从机,并且在从机中记录了以下错误,从而停止了从机。我想解决这个问题,让两台服务器同步,然后重新开始。

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
 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: 
我不确定如何执行以下操作:

try restarting transaction' (1213)
注意:我在slave中运行了以下命令,IO正在运行,sql已停止。我只想重新同步,并在将来避免这种情况。

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
 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: 

谢谢。

您必须从应用程序重新启动事务,mysql已经忘记了这一点

当Mysql遇到死锁时,它将选择一个“赢家”并让该线程继续,另一个线程将执行回滚,释放其锁并获得“尝试重新启动事务”错误

您的应用程序应该尝试检测到这一点,然后再次尝试相同的查询。希望你不会再次陷入僵局

至于你的从机,我以前没有看到过这个错误,这有点让人困惑,我认为对失败的主机的查询永远不会写入bin日志,因此永远不会出现“主机和从机上的不同错误”

不管怎样。要解决此问题,您需要运行

SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1; START SLAVE; 
这将忽略bin日志中的第一条语句,然后重新启动服务器。无论该语句是什么,它都不会在从属服务器上运行,因此您必须手动确保主服务器和从属服务器上的表是相同的


祝你好运。

请参阅我问题中添加的注释。我仍然没有重新同步数据,但是,我是否应该现在运行SKIP_计数器?
sql running:no
表示复制因错误而停止。您需要修复错误并重新启动从属服务器。您可以只
start slave
,但除非中断复制的语句可以运行,否则它将再次停止。在
show slave status
中的某个位置,有一行名为
last replication error
或其他内容。调查一下为什么这句话对主设备有效,而不是对从设备有效,这就是你以后可以避免的方法。非常感谢。正在同步。我认为您需要检查主服务器的状态。这样的错误(死锁)需要在不进行复制的情况下进行检查。我认为,当您出现此错误时,您的服务器负载过重。