我的复制服务器遇到了问题。本质上,我们有 2 个数据库(database1 和 database2)。主服务器两者都有。从站只有database1。有一个
Replicate_Do_DB: database1
Run Code Online (Sandbox Code Playgroud)
在 CHANGE MASTER TO 配置中设置。
现在发生的事情是 - 我们正在使用代码点火器,其中一位程序员创建了 database2 并开始向其中插入信息。代码点火器将默认数据库设置为 database1。现在结果是他生成的每个查询 - 我在 SHOW SLAVE STATUS\G 上收到错误:
Error 'Table 'database2.tbl40' doesn't exist' on query. Default database: 'database1'. Query: 'INSERT INTO `database2`.`tbl40` (`date`, `day`) VALUES ('2011-04-26', '2011-04-26')'
Run Code Online (Sandbox Code Playgroud)
所以基本上,我后来解决了这个问题,但复制不起作用,因为大约有 1000 个查询会为复制服务器产生该错误。
我的问题是 - 有没有办法从二进制日志中清除这样的查询?或者我需要编写一个脚本来执行
SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1;
Run Code Online (Sandbox Code Playgroud)
对于每个产生和错误的查询?
如果你真的不关心那个表,你可以在从服务器上使用pt-slave-restart并让它跳过这些问题。我对运行它持保守态度,并确保您只跳过对您不关心的表/数据库的查询,或者至少仅跳过特定错误。
您没有在 SHOW SLAVE STATUS 的输出中发布错误代码,但我怀疑它是错误 1146。
例如,这将跳过 1146 的所有错误:
pt-slave-restart -u root -p pass --error-numbers 1146
Run Code Online (Sandbox Code Playgroud)
或者,您可以尝试跳过引用该表的所有错误
pt-slave-restart -u root -p pass --error-text 'database2'
Run Code Online (Sandbox Code Playgroud)
另一种方法是replicate-ignore-db=database2
在从站上设置并重新启动 MySQL,但是您应该在文档中阅读有关其工作原理的一些注意事项
归档时间: |
|
查看次数: |
3588 次 |
最近记录: |