有没有办法获得容错的MySQL复制?我处在一个有许多网络问题的环境中。似乎复制会出错并停止。我需要它继续工作并从这些故障中恢复。有一些包装器软件可以检查复制状态,并在丢失其日志位置时重新启动它。还有其他选择吗?
注意: 复制是从带有MySQL 4.1的嵌入式计算机到具有MySQL 5.0.45
的外部计算机完成的答案 0 :(得分:2)
你得到什么错误?您还没有描述您正在使用的复制方案或Mysql版本。你得到的错误也很重要。
当Master-Master复制中存在主/唯一密钥冲突时,复制通常会停止。除了典型的主从复制设置之外,网络问题不应该导致问题。
尝试使用Mysql 5.1或更新版本,因为5.0中的复制是基于语句的,会导致Master-Master设置出现问题,或者当您使用存储过程时出现问题。
(另外,远离Mysql Cluster ......注意到另一条评论的建议)。
答案 1 :(得分:2)
只有当数据库以某种方式失去同步时才会发生复制错误,让服务器简单地继续意味着不连贯的数据库,我真的怀疑你是否想要它。
根据我的经验,你唯一一次遇到这样的错误就是其中一个主服务器没有完成查询而奴隶注意到了。
在任何情况下,如果你真的想让奴隶继续通过某种类型的chron作业,你总是可以每隔几分钟运行一次查询,询问奴隶“SHOW SLAVE STATUS
”然后检查错误列,如果它存在,发送“STOP SLAVE; SET GLOBAL SQL_SLAVE_SKIP_COUNTER; START SLAVE;
”命令。但是,当mysql遇到错误时,向管理员发送电子邮件可能更容易,因此他/她可以调查问题的根源并确保数据库实际上是同步的,否则您可能会看到随着数据库变得越来越不同步,在不久的将来会出现更多错误。
答案 2 :(得分:1)
考虑使用NDB存储引擎的MySQL Cluster,它意味着没有共享和容错
答案 3 :(得分:1)
MySQL复制通常会检测问题并重新连接,从中断处继续。
如果您遇到复制错误,则源可能是其他内容。 MySQL复制有效地在查询日志上执行“tail -f”并在从属服务器上重放它(它比那个稍微聪明,但不多)。
如果数据库不同步,MySQL复制既不会检测也不会修复它,但最终可能导致它中断,因为后续更新由于从站上的数据冲突而无法继续。
复制从属设备上的默认超时时间太长 - 等待数小时(或其他) - 您需要减少此时间。
数据变得不同步很难避免,缓解步骤如下: