mysql - 如何重新复制被忽略的表
问题描述
我目前正在考虑以下问题:
客户在两个 mariaDB 系统之间建立了一个简单的主/从复制。由于未知原因,他们设置了标志“Replicate_Wild_Ignore_Table”以跳过“logdb.%”。显然,他们决定跳过该数据库,并希望 logdb 再次包含在复制中。
我现在很好奇,是否有可能以某种方式删除该标志并将有问题的数据库作为其余数据库复制,或者没有办法绕过“停止从属,转储主控,导入转储,基于当前 logpos 重新创建复制,启动奴隶”程序?
解决方案
您不能假设 master 仍然拥有所有相关的 binlog,这些 binlog 曾经包含对 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
推荐阅读
- java - 如果我知道文件字符串名称,如何访问 R.file?
- python - 如何在 np.where() 的数据框中检查列表中的空元素?
- arduino-uno - 想通过 MAX485 使用 Arduino Uno 读取 VFD 的输出频率
- python - 用 Python 构建图
- ios - 在没有动画的情况下执行 UICollectionView reloadData
- sql-server - 在 SSIS 项目中进行 ETL 过程时,如何在 SCD 转换中映射 varchar(max) 列?
- javascript - 组件在反应钩子中多次重新渲染
- mqtt - 在两个 MQTT 代理之间路由发布消息
- c# - 我的方法中的空引用异常。如何解决?
- authentication - symony 3.3 保护多个提供商的身份验证