我有一个系统,其中有一个mysql数据库,可以对其进行更改。然后我让其他机器每隔10分钟左右连接到这个mysql数据库,并重新下载与它们相关的表(例如,一台机器可能下载表a、b、c,而另一台机器可能下载表a、d、e)。
如果不使用debezium或kafka,有没有一种方法可以在某个时间戳之后完成所有mysql更改,从而只将这些更改发送到请求更新的机器,而不是整个表。。。例如,机器x可能希望完成自上次联系mysql数据库以来的所有mysql更改,然后将这些更改应用于它自己的旧数据以更新它。
有什么办法吗?
2条答案
按热度按时间acruukt91#
mysql可以设置为自动复制数据库、表等。如果连接丢失,它将在连接恢复时恢复。
看看这个页面mysql v5.5复制,或者这个mysql v8.0复制
fslejnso2#
如果不想或可以部署kafka集群,可以使用debezium作为嵌入到应用程序中的库。
或者,您可以直接使用mysql binlog连接器(下面的debezium连接器也使用它),它允许您从给定的偏移位置读取binlog。但接下来您必须自己处理许多事情,这些事情已经由debezium之类的解决方案来处理了,例如正确处理模式元数据和更改(例如向现有表中添加列)。通常这需要解析mysql ddl,它本身非常复杂。
免责声明:我是debezium的领导