如何重新复制被忽略的表

时间:2019-03-27 15:02:59

标签: mysql mariadb replication database-replication

我目前正在考虑以下问题:

客户已在两个mariaDB系统之间建立了简单的主/从复制。由于未知原因,他们将标志“ Replicate_Wild_Ignore_Table”设置为跳过“ logdb。%”。显然,他们决定跳过该数据库,并希望再次将logdb包含在复制中。

我现在很好奇,是否有可能以某种方式删除该标志并使有问题的数据库作为其余部分进行复制,或者没有办法绕过“停止从站,转储主站,导入转储,基于当前的logpos,启动从属程序?

1 个答案:

答案 0 :(得分:0)

您不能假定主服务器仍然具有所有相关的二进制日志,这些二进制日志曾经包含对logdb。%表的更新。也就是说,即使您可以重新应用这些更新,您是否也有足够的历史记录来说明对表的所有更改?

另一个风险是,如果您使用基于语句的复制,并且曾经有引用过logdb。%中的表和另一个数据库中的表的语句,则复制过滤器会跳过该语句。例如:

INSERT INTO mydb.mytable SELECT * FROM logdb.othertable;

因此,即使logdb。%中不是 的表也可能受到威胁。关键是你不确定。

最重要的是,您绝对应该现在通过获取主数据库的当前备份来立即重新初始化副本,并避免将来使用复制过滤器。

如果使用InnoDB表,则可以考虑使用Percona XtraBackup来简化此过程。参见https://www.percona.com/doc/percona-xtrabackup/2.3/howtos/setting_up_replication.html