开发者社区 问答 正文

如果同时建两个实例(destination)监听同一个数据库 会不会有问题?

环境信息

canal version mysql version

问题描述

故事是这样的:我测试的时候创建了一个destination A监听数据库 db,然后创建了ES-adapter,然后我又创建了destination B 还是监听db,然后有一天A挂了,然后ES-adapter都去用B了,A就没用了 ,这情况正常吗,我看代码是根据数据库-表明作为key去查的,那不是没destination什么事情了。 (ES-Adapter那边)

原提问者GitHub用户bestzhao

展开
收起
古拉古拉 2023-05-08 14:54:59 101 分享 版权
2 条回答
写回答
取消 提交回答
  • 每个destination都有各自独立的adapter

    原回答者GitHub用户agapple

    2023-05-09 18:01:55
    赞同 展开评论
  • 在同时建立两个实例(destination)监听同一个数据库时,可能会出现问题。这是因为每个实例都会尝试与ZooKeeper中的一个服务器建立连接,如果ZooKeeper中存在多个实例,那么可能会出现竞争条件,导致数据库实例无法正确地获取。

    如果出现问题,可能会导致以下情况之一:

    实例无法正确地连接到ZooKeeper中的数据库服务器。 实例之间出现冲突,导致数据无法正确地同步。 实例之间无法协作,导致数据库操作无法正确地执行。 因此,在实际应用中,最好不要同时建立多个实例监听同一个数据库。如果必须这样做,请确保ZooKeeper中只存在一个实例,并且在每个实例中使用不同的数据库名称。

    此外,您可以考虑使用分布式数据库技术,例如 Hadoop Distributed File System(HDFS)、Google File System(GFS)或者Amazon S3 等。这些技术可以在多个服务器之间分配数据存储和索引,以提高系统的可靠性和性能。

    2023-05-08 15:29:18
    赞同 展开评论