搜索

第 8 章 PostgreSQL 的 Debezium 连接器

download PDF

Debezium PostgreSQL 连接器捕获 PostgreSQL 数据库模式中的行级更改。有关与连接器兼容的 PostgreSQL 版本的详情,请参考 Debezium 支持的配置页面

第一次连接到 PostgreSQL 服务器或集群时,连接器会获取所有模式的一致性快照。完成该快照后,连接器会持续捕获插入、更新和删除数据库内容以及提交到 PostgreSQL 数据库的行级更改。连接器生成数据更改事件记录,并将其流传输到 Kafka 主题。对于每个表,默认行为是连接器所有生成的事件都流传输到该表的独立 Kafka 主题。应用程序和服务会消耗来自该主题的数据更改事件记录。

使用 Debezium PostgreSQL 连接器的信息和步骤进行组织,如下所示:

8.1. Debezium PostgreSQL 连接器概述

PostgreSQL 的逻辑解码 功能是在版本 9.4 中引入的。它是一个允许提取提交至事务日志的更改的机制,并通过 输出插件 帮助以用户友好的方式处理这些更改。output 插件可让客户端使用更改。

PostgreSQL 连接器包含两个主要部分,它们协同工作来读取和处理数据库更改:

  • pgoutput 是 PostgreSQL 10+ 中的标准逻辑解码输出插件。这是此 Debezium 发行版本中唯一支持的逻辑解码输出插件。此插件由 PostgreSQL 社区维护,供 PostgreSQL 本身用于 逻辑复制。此插件始终存在,因此不需要安装额外的库。Debezium 连接器将原始复制事件流直接解释为更改事件。
  • Java 代码(实际 Kafka Connect 连接器),通过使用 PostgreSQL 的 流传输复制协议 和 PostgreSQL JDBC 驱动程序 读取逻辑解码输出插件生成的更改。

连接器会为捕获的每行级别的插入、更新和删除操作生成更改事件,并在单独的 Kafka 主题中为每个表发送更改事件记录。客户端应用程序读取与感兴趣的数据库表对应的 Kafka 主题,并可响应它们从这些主题接收的每行级别的事件。

PostgreSQL 通常会在一段时间后清除 write-ahead 日志(WAL)片段。这意味着连接器没有对数据库进行的所有更改的完整历史记录。因此,当 PostgreSQL 连接器首先连接到特定的 PostgreSQL 数据库时,它首先对每个数据库模式执行 一致的快照。连接器完成快照后,它会从执行快照的确切点继续流出更改。这样,连接器会以所有数据的一致性视图开始,且不会省略在快照被生成时所做的任何更改。

连接器可以接受故障。当连接器读取更改并生成事件时,它会记录每个事件的 WAL 位置。如果连接器因任何原因(包括通信故障、网络问题或崩溃)停止,在重启连接器时,在重启连接器会继续读取最后一次关闭的 WAL。这包括快照。如果连接器在快照期间停止,连接器会在重启时启动新快照。

重要

连接器依赖于并反映 PostgreSQL 逻辑解码功能,其有以下限制:

  • 逻辑解码不支持 DDL 更改。这意味着连接器无法将 DDL 更改事件报告回消费者。
  • 逻辑解码复制插槽只支持在 主服务器中。当有 PostgreSQL 服务器集群时,连接器只能在活跃的 主服务器中 运行。它无法在 待机副本上运行。如果 主服务器 失败或被降级,连接器会停止。主服务器 恢复后,您可以重启连接器。如果不同的 PostgreSQL 服务器已提升到 ,请在重启连接器前调整连接器配置。

出错时的行为 描述了连接器在出现问题时如何响应。

重要

Debezium 目前仅支持使用 UTF-8 字符编码的数据库。使用单字节字符编码时,无法正确处理包含扩展 ASCII 代码字符的字符串。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.