我正在迁移具有以下从属跳过错误设置的集群:
slave-skip-errors = 0,1062,1053,1051
当然,就这些事情而言,没有人知道为什么会这样设置,是谁做的,或者他们是否在公司。我也知道为什么不设置任何类型的从属跳过错误,但我对“0”一无所知。我设置的复制不会有任何从属跳过错误。
看着http://dev.mysql.com/doc/refman/5.7/en/error-messages-server.html我可以找到所有被跳过的代码。我只能假设零是跳过从属错误的一种统称?我的谷歌功夫在这个问题上不太强,我找不到问题的答案,所以我希望这里的一些 MySQL 专家能够确认或否认 0,以及它是否确实起了作用。
谢谢!
答案1
这些都不应该存在,这个配置指令应该设置为默认值(不忽略任何错误)。就这么简单。如果我是你 - 我会重新初始化整个副本。从逻辑层面来看,它几乎不可避免地不同步。
这个都市传说(设置非默认slave-skip-errors
)源于两件事:
- 不了解复制的工作原理
- 有趣的是,MySQL
read-only
默认不将副本设置为,因此任何仍连接到它的客户端(由于过时的连接描述符或卡住的连接池)都可能很容易损坏它。因此,每个副本可能都需要设置为read-only
,除非存在循环链式复制(从我的角度来看 - 又是一个废话)或至少明确理解为什么它应该是读写的。