防止CDC程序读取MySQL的行,以免产生冗余数据

问题描述 投票:0回答:1

我正在使用CDC工具(我正在使用Zendesk的Maxwell)将旧版应用程序的数据库连接到另一个数据库,以从数据库中读取数据,而我正在编写另一个程序以将数据写入到原始数据库中其他地方。

问题是,当将外部数据写入旧数据库时,CDC工具将对其进行提取。我想防止这种情况,因为其他系统中已经存在外部数据。

我曾考虑过将一列添加到旧数据库的所有表中,例如_origin,并将每一行的原点放在该列中。这样做的问题是,遗留应用程序会进行大量更新,因此CDC工具将错过实际更新,因为_origin列不会更改。

是否有办法以某种方式将元数据写入MySQL binlog中以指示此特定事务的来源?我将不得不弄清楚如何使用CDC工具读取它或修改CDC工具以读取此类元数据,但我想看看它是否有可能。

或者,有没有更好的方法?

mysql infinite-loop change-data-capture
1个回答
0
投票

不,无法将自己的自定义元数据写入binlog。只是数据本身,还有某些会话变量。

一种解决方法是,当您从CDC读取数据以插入目标数据库时,使用REPLACE而不是INSERT。语法相同,但是如果该行已经存在,它将覆盖而不是附加。

© www.soinside.com 2019 - 2024. All rights reserved.