JDBC跨多个PostgreSQL数据库的逻辑复制

时间:2017-10-31 11:01:40

标签: postgresql jdbc replication

我知道可以使用PostgreSQL驱动程序通过PGReplication API接收单个数据库的逻辑数据库复制操作流。

但我希望只使用一个流从postgresql集群中的所有数据库接收事件。

主要动机是减少用例所需的连接数量;如果我们只为所有数据库使用一个数据流,我们可以避免每个服务器消耗或管理30多个连接。这可以在我们运行的许多服务器上更好地扩展。

这在JDBC中是否可行?很高兴考虑使用JDBC的替代方案。

1 个答案:

答案 0 :(得分:0)

PostgreSQL提供的任何内容都不允许您直接执行此操作,因为PostgreSQL后端无法连接到多个数据库或从多个数据库接收更改。

如果使用LISTENNOTIFY,逻辑解码或者什么,每个数据库需要一个连接,这没关系。或者您需要某种聚合器/代理来维护这些连接,并为您的应用提供单个流。

考虑:

  • 在数据库服务器上或附近运行per-db-server聚合器,它对服务器上的所有数据库都具有conns,并通过Kafka或其他任何方式提供单个事件流。

  • 检查具有这么多独立数据库的架构是否需要为某种目的进行链接是有意义的。您是否应该使用模式分片?

pglogical的下一个版本(不是PostgreSQL的内置逻辑复制,一个单独的工具)将支持将事件流提供给Kafka,然后您可以从您的应用程序中使用它。所以这可能是一种选择。免责声明:我是开发人员之一,在2ndQuadrant工作,这是该公司的工具。