暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

17.4.1.27 Slave Errors During Replication

原创 由迪 2020-04-15
417

如果一条语句在主服务器和从服务器上均产生相同的错误(相同的错误代码),则会记录该错误,但复制将继续。

如果一条语句在主服务器和从服务器上产生了不同的错误,则从服务器SQL线程终止,从服务器将一条消息写入其错误日志,并等待数据库管理员决定如何处理该错误。这包括以下情况:一条语句在主机或从机上产生错误,但不会同时在两者上产生错误。要解决该问题,请手动连接到从站并确定问题的原因。 SHOW SLAVE STATUS对此很有用。然后解决问题并运行START SLAVE。例如,您可能需要创建一个不存在的表,然后才能再次启动从属服务器。

注意
如果在从站的错误日志中记录了一个临时错误,则不必采取引用的错误消息中建议的任何操作。临时错误应由客户端重试事务处理。例如,如果从属SQL线程记录了一个与死锁有关的临时错误,则无需在从属服务器上手动重新启动事务,除非从属SQL线程随后以非临时错误消息终止。

如果不希望使用此错误代码验证行为,则可以使用该–slave-skip-errors选项掩盖(忽略)某些或所有错误 。

对于诸如这样的非事务性存储引擎 MyISAM,可能有一条语句仅部分更新表并返回错误代码。例如,在具有违反键约束的一行的多行插入中,或者在更新某些行后杀死长的update语句时,可能会发生这种情况。如果这在主服务器上发生,则从服务器希望执行该语句会导致相同的错误代码。如果不是,则从SQL线程如前所述停止。

如果要在主服务器和从服务器上使用不同存储引擎的表之间进行复制,请记住,针对一个表的版本运行同一条语句可能会产生不同的错误,但针对另一表的版本运行该语句可能会产生不同的错误,否则可能会导致一个错误该表的版本,但其他版本除外。例如,由于MyISAM忽略外键约束,所以访问主服务器上的表的INSERTor UPDATE语句 InnoDB可能会导致外键冲突,但是MyISAM在从属服务器上的同一表的版本上执行的同一语句 不会产生此类错误,从而导致复制停止。

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论