使用ApacheKafka对mysql更改数据捕获进行数据库并行处理(多个使用者)

mmvthczy  于 2021-06-07  发布在  Kafka
关注(0)|答案(0)|浏览(227)

我一直在研究如何实现一个系统来捕获mysql数据库中的变化。我看过的一个例子是linkedin使用databus(http://www.slideshare.net/sunilnagaraj1/databus-eventbrite2013 ),以及其他人在不同的地方使用ApacheKafka。
在上面的所有项目中,似乎都暗示了当从mysql binlog接收数据时,有多个使用者并行工作。使用者应该重放他们在另一个mysql数据库上收到的所有insert/update/delete命令,该数据库应该是原始源数据库的镜像。
但是,这是否意味着在目标镜像mysql数据库上执行这些insert/update/delete命令时可能会被错误地解释?
例如,如果在binlog中,有以下两条语句,它们的顺序如下所示:

DELETE FROM stats;
INSERT INTO stats VALUES(....);

然后第一个语句转到consumer 1,然后第二个语句转到consumer 2,但是consumer 2首先执行,然后是consumer 1,这不会导致数据丢失吗?
因此,在使用apachekafka的情况下,似乎目前唯一的解决方法是使用一个主题、一个分区和一个使用者(或使用者组)。
我想知道大家对此有什么想法。我知道这是在mysql binlog中使用基于语句的更改。如果改用基于行的更改,会有什么不同吗?
谢谢你

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题