开发者社区> 问答> 正文

Polardb(Postgres)实例,是否可以配合Debezium?

PolarDB(Postgres)实例,是否可以通过Debezium将WAL的改动同步到其他的数据库,比如分析型的Postgres?

我尝试了Kafka Connect进行配置,首先将WAL_LEVEL在PolarDB中改成了logical,然后通过Kafka Connect进行连接的时候,会有一个PSQLException,Replication mode is not available for Read-Write Splitting service.

是否这样的方案无法达成?

展开
收起
OOPhantom 2020-04-21 13:54:07 1407 0
6 条回答
写回答
取消 提交回答
  • 是的,这样的方案无法达成。由于您使用的是Read-Write Splitting服务,该服务不支持Replication模式,因此无法通过Debezium将PolarDB中的WAL改动同步到其他的数据库,例如分析型的Postgres。您可以尝试使用其他的Kafka Connect连接器,例如Postgres Connector或MySQL Connector,这些连接器支持Replication模式。

    2023-09-19 10:38:38
    赞同 展开评论 打赏
  • 十分耕耘,一定会有一分收获!

    楼主你好,根据阿里云Polardb官方文档,暂时不支持使用Polardb的读写分离实例作为发布者进行逻辑复制,也不支持通过逻辑复制将数据同步到其他数据库。因此,无法使用Debezium将Polardb(Postgres)实例中的WAL改动同步到其他数据库。

    请注意,如果您使用的是非读写分离实例,且开启了逻辑复制,可以使用Debezium将WAL改动同步到其他数据库。

    2023-09-14 15:45:31
    赞同 展开评论 打赏
  • 北京阿里云ACE会长

    Debezium 是一个开源的分布式平台,用于捕获和处理数据库中的更改。它可以将更改事件从数据库中抽取出来,并将这些事件广播到 Kafka 等消息系统。Polardb(Postgres) 实例可以与 Debezium 配合使用,将 WAL 的改动同步到其他数据库,比如分析型的 Postgres。
    根据您提供的信息,您在 PolarDB 中将 WAL_LEVEL 改为了 logical,并通过 Kafka Connect 进行连接。然而,您遇到了一个 PSQLException,提示“Replication mode is not available for Read-Write Splitting service”。这意味着在您的 PolarDB 实例上,读写分离服务(Read-Write Splitting service)不支持复制模式(Replication mode)。
    由于 PolarDB 是一个分布式数据库,其架构与传统的 PostgreSQL 有所不同。在 PolarDB 中,读写分离和主从复制是两种不同的数据复制策略。要实现 Debezium 与 PolarDB 的集成,您需要确保 PolarDB 实例配置正确,以支持主从复制(Replication mode)。

    2023-09-06 19:03:31
    赞同 展开评论 打赏
  • Debezium是一个基于事件流的数据同步工具,可以捕获数据库的更改(例如,通过WAL日志)并将其传输到其他数据库或应用程序。然而,Debezium本身并不直接支持PolarDB(Postgres)到另一个Postgres实例的同步。

    如果你想将PolarDB的更改同步到另一个Postgres实例,你可以尝试使用Kafka Connect。Kafka Connect是一个可扩展的数据传输框架,可以连接各种数据源和目标。你可以配置Kafka Connect以读取PolarDB的WAL日志,并将这些更改传输到另一个Postgres实例。

    在尝试配置Kafka Connect时遇到了PSQLException,表示复制模式不适用于读写分离服务。这可能是因为PolarDB的读写分离特性导致的问题。

    要解决这个问题,你可以尝试以下方法:

    • 确保PolarDB的读写分离已关闭或禁用,以便Kafka Connect可以正常工作。这可以通过修改PolarDB的配置文件或使用适当的PolarDB客户端命令来实现。
    • 配置Kafka Connect以使用逻辑复制而不是物理复制。逻辑复制更适合于捕获WAL日志中的更改,并且可以避免与读写分离相关的问题。你可以在Kafka Connect的配置文件中设置polar.wal.mode=logical来启用逻辑复制模式。
    2023-09-05 19:07:55
    赞同 展开评论 打赏
  • 全栈JAVA领域创作者

    是的,PolarDB(Postgres)实例本身不支持Debezium将WAL的改动同步到其他的数据库,因为PolarDB是一个分布式数据库,它的数据存储在分布式的节点上,而不是在单个的Postgres实例上。如果您需要将PolarDB的数据同步到其他的数据库,您需要使用PolarDB-X或者其他的数据同步工具。
    对于您的情况,如果您需要将PolarDB的数据同步到分析型的Postgres,您可以考虑使用PolarDB-X,它支持将PolarDB的数据同步到分析型的Postgres。您可以使用PolarDB-X的数据同步功能,将PolarDB的数据同步到分析型的Postgres中,以便进行数据分析和挖掘。
    需要注意的是,在使用PolarDB-X的数据同步功能时,您需要根据具体情况进行配置和优化,以确保数据同步的效率和准确性。同时,您还需要定期备份数据和更新软件,以确保数据的安全性和隐私性。

    2023-09-04 20:24:17
    赞同 展开评论 打赏
  • 是的,PolarDB for PG(即PolarDB,它是阿里云自研的关系型数据库,基于PostgreSQL开发而来)不支持将WAL日志发送到其他数据库。这是因为PolarDB for PG的设计目标是在高可用性、高性能和高安全性的前提下提供稳定的数据服务。为了实现这些目标,PolarDB for PG采用了一些特殊的架构设计,例如Read-Write Splitting(读写分离)和Multi-Master Replication(多主复制)等。

    对于您提到的Debezium和Kafka Connect,它们主要用于实时数据复制和监控,通常用于将一个数据库的变更日志传递给另一个数据库或者其他工具来进行进一步处理。然而,由于PolarDB for PG的设计特点,它并不适合采用这种方式来进行数据复制。

    如果您希望将PolarDB for PG的数据复制到其他数据库,建议考虑使用PolarDB for PG提供的内置复制功能。具体来说,您可以在PolarDB for PG中配置主从复制(Master-Slave Replication),这样,主节点上的更改就会自动复制到从节点上。这是一种高效且可靠的数据复制方法,适用于大多数场景。

    另外,如果您的需求非常特殊,必须使用Debezium和Kafka Connect等方式来实现数据复制,那么可能需要对PolarDB for PG进行一定的改造,以便适应这些工具的使用。但是,这样做可能会影响到PolarDB for PG的稳定性和性能,因此需要谨慎考虑。

    2023-09-04 18:00:50
    赞同 展开评论 打赏
滑动查看更多
问答排行榜
最热
最新

相关电子书

更多
云栖大会:开源 PolarDB 架构演进、关键技术与社区建设 立即下载
2023云栖大会:和客户一起玩转PolarDB新特性 立即下载
2023云栖大会:PolarDB for AI 立即下载