我一直在研究如何实现一个系统来捕获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中使用基于语句的更改。如果改用基于行的更改,会有什么不同吗?
谢谢你
暂无答案!
目前还没有任何答案,快来回答吧!