我有一个系统将一个数据库复制到四个从服务器。时不时地,当流量很高时,一个或多个从服务器遇到重复插入错误并且从服务器停止运行。
发生这种情况时,我有两个选择 - 我可以SET GLOBAL SQL_SLAVE_SKIP_COUNTER
或者我可以删除从属设备中的违规行。两者似乎都可以工作,我的逻辑说,如果发生了一些事情导致了这个问题,那么从站中的数据可能已损坏。鉴于这只能发生在 INSERT 上,通过删除该行,我保证一旦复制恢复,从属数据将与主数据相匹配。通过跳过,如果该行的数据在从站中损坏,它将保持损坏状态。
我错过了什么吗?
此外,鉴于这在两个特定表上每几个月发生一次,是否有任何理由我不应该自动执行在遇到此错误时触发的过程,删除从属中的该行并重新启动从属?
编辑:我相信 MySQL 5.5.29 和语句复制。
你不必使用任何触发器,如果你想安全地跳过重复的关键错误,请将其添加到奴隶上的 my.cnf
[mysqld]
slave-skip-errors=1062
Run Code Online (Sandbox Code Playgroud)
然后重启mysql
检查所有slave是否有不同的serverID
归档时间: |
|
查看次数: |
934 次 |
最近记录: |