本文介绍如何将 PostgreSQL 数据库变更数据捕获 (CDC) 源添加到事件流。
通过用于 Microsoft Fabric 事件流的 Postgre SQL 数据库变更数据捕获 (CDC) 源连接器,你可以捕获 PostgreSQL 数据库中当前数据的快照。 目前,PostgreSQL 数据库变更数据捕获(CDC)受以下服务支持,可在其中公开访问数据库:
- Azure Database for PostgreSQL
- Amazon RDS for PostgreSQL
- Amazon Aurora PostgreSQL
- Google Cloud SQL for PostgreSQL
将 PostgreSQL 数据库 CDC 源添加到事件流后,它将捕获对指定表的行级更改。 然后,可以实时处理这些更改,并发送到不同的目标,以便进一步分析。
注意
工作区容量的以下区域不支持此源:美国西部 3、瑞士西部。
先决条件
使用参与者或更高权限在 Fabric 容量许可证模式(或)试用许可证模式下访问工作区。
已在 PostgreSQL 数据库中注册用户访问权限。
你的 PostgreSQL 数据库必须可供公开访问,并且不能位于防火墙后面或在虚拟网络中受到保护。
在 PostgreSQL 数据库和表中启用了 CDC。
如果你具有 Azure Database for PostgreSQL,请按照下一部分中的步骤启用 CDC。 有关详细信息,请参阅逻辑复制和逻辑解码 - Azure Database for PostgreSQL – 灵活服务器。
有关其他 PostgreSQL 数据库,请参阅用于 PostgreSQL 的 Debezium 连接器 :: Debezium 文档。
如果没有事件流,请创建一个事件流。
在 PostgreSQL 数据库中启用 CDC
本部分使用 Azure Database for PostgreSQL 作为示例。
要启用 Azure Database for PostgreSQL 灵活服务器中的 CDC,请执行以下步骤:
在 Azure 门户中 Azure Database for PostgreSQL 灵活服务器页上的导航菜单中,选择“服务器参数”。
在“服务器参数”页上:
- 将 "wal_level" 设置为“逻辑”。
- 将 "max_worker_processes" 更新为至少 "16"。
保存所做的更改并重启服务器。
确认 Azure Database for PostgreSQL 灵活服务器实例允许公用网络流量。
通过运行以下 SQL 语句授予管理员用户复制权限。 如果要使用其他用户帐户连接 PostgreSQL DB 来提取 CDC,请确保用户是 表所有者。
ALTER ROLE <admin_user_or_table_owner_user> WITH REPLICATION;
启动“选择数据源”向导
如果尚未向事件流添加任何源,请选择“使用外部源”磁贴。
如果要向已发布的事件流添加源,请切换到“编辑”模式,在功能区中选择“添加源”,然后选择“外部源”。
在“选择数据源”页上,在 PostgreSQL DB(CDC)磁贴上搜索并选择“连接”。
配置并连接到 PostgreSQL 数据库 CDC
在“连接”页上,选择“新建连接”。
在“连接设置”部分中,输入以下信息。
服务器:PostgreSQL 数据库的服务器地址,例如 my-pgsql-server.postgres.database.azure.com。
数据库:数据库名称,例如 my_database。
连接名称:输入此连接的名称。
身份验证类型,选择“基本”,然后输入数据库的用户名和密码。
注意
目前,Fabric 事件流仅支持 基本 身份验证。
选择 “连接” 以完成连接设置。
端口:输入服务器的端口号。 默认值为 5432。 如果在 “管理连接”和“网关”中配置了所选的云连接,请确保端口号与其中设置的端口号匹配。 如果它们不匹配,则 管理连接和网关 中的云连接中的端口号优先。
从数据库表捕获更改时,可以在两个选项之间进行选择:
- 所有表:捕获数据库中每个表的更改。
-
输入表名称(s):允许使用逗号分隔列表指定表的子集。 可以使用完整表标识符(格式
schemaName.tableName
)或有效的正则表达式。 例子: -
dbo.test.*
: 选择在dbo
架构中,名称以test
开头的所有表。 -
dbo\.(test1|test2)
:选择dbo.test1
并dbo.test2
。
可以在列表中合并这两种格式。 整个条目的总字符限制为 102,400 个字符。
槽名称(可选):输入为从特定数据库/架构的特定插件流式传输变更而创建的 PostgreSQL 逻辑解码槽的名称。 服务器使用此插槽将事件流传输到 Eventstream 流处理连接器。 它必须仅包含小写字母、数字和下划线。
- 如果未指定,则使用 GUID 创建插槽,需要适当的数据库权限。
- 如果存在指定的槽名称,连接器将直接使用它。
可以展开 “高级设置” 以访问 PostgreSQL 数据库 CDC 源的其他配置选项:
发布名称:指定要使用的 PostgreSQL 逻辑复制发布的名称。 这必须与数据库中的现有出版物匹配,否则将根据自动创建模式自动生成。 默认值:
dbz_publication
。注意
连接器用户必须具有超级用户权限才能创建发布。 建议在首次启动连接器之前手动创建出版物,以避免由于权限设置引起的问题。
发布自动创建模式:控制是否以及如何自动创建发布。 选项包括:
-
Filtered
(默认值):如果指定的发布件不存在,连接器将创建一个发布件,其中仅包含所选的表(如表包含列表中指定)。 -
AllTables
:如果指定的发布存在,连接器会使用它。 如果不存在,连接器会创建一个包含数据库中所有表的表。 -
Disabled
:连接器不会创建发布内容。 如果缺少指定的出版物,连接器将引发异常并停止。 在这种情况下,必须在数据库中手动创建出版物。
有关详细信息,请参阅 有关发布自动创建模式的 Debezium 文档
-
小数处理模式:指定连接器如何处理 PostgreSQL
DECIMAL
和NUMERIC
列值:-
Precise
:表示使用精确小数类型(例如 JavaBigDecimal
)的值,以确保数据表示形式的完全精度和准确性。 -
Double
:将值转换为双精度浮点数。 这可以提高可用性和性能,但可能会导致精度损失。 -
String
:将值编码为格式化字符串。 这使得它们在下游系统中易于使用,但会丢失有关原始数值类型的语义信息。
-
在“查看 + 连接”页上,查看摘要,然后选择“添加”。
注意
一个事件流的源和目标的最大数量为 11。
查看更新的事件流
可以在“编辑模式”下看到添加到事件流的 PostgreSQL 数据库 CDC 源。
要实施这个新添加的 PostgreSQL DB CDC 源,请选择“发布”。 完成这些步骤后,你的 PostgreSQL DB CDC 源可在“实时视图”中进行可视化。
相关内容
其他连接器: