将 PostgreSQL 数据库 CDC 源添加到事件流

本文介绍如何将 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瑞士西部

先决条件

在 PostgreSQL 数据库中启用 CDC

本部分使用 Azure Database for PostgreSQL 作为示例。

要启用 Azure Database for PostgreSQL 灵活服务器中的 CDC,请执行以下步骤:

  1. 在 Azure 门户中 Azure Database for PostgreSQL 灵活服务器页上的导航菜单中,选择“服务器参数”。

  2. 在“服务器参数”页上:

    • 将 "wal_level" 设置为“逻辑”
    • 将 "max_worker_processes" 更新为至少 "16"

    为灵活服务器部署启用 CDC 的屏幕截图。

  3. 保存所做的更改并重启服务器。

  4. 确认 Azure Database for PostgreSQL 灵活服务器实例允许公用网络流量。

  5. 通过运行以下 SQL 语句授予管理员用户复制权限。 如果要使用其他用户帐户连接 PostgreSQL DB 来提取 CDC,请确保用户是 表所有者

    ALTER ROLE <admin_user_or_table_owner_user> WITH REPLICATION;
    

启动“选择数据源”向导

如果尚未向事件流添加任何源,请选择“使用外部源”磁贴

显示选择“使用外部源”磁贴的屏幕截图。

如果要向已发布的事件流添加源,请切换到“编辑”模式,在功能区中选择“添加源”,然后选择“外部源”

显示选择“添加源”然后选择“外部源”菜单的屏幕截图。

“选择数据源”页上,在 PostgreSQL DB(CDC)磁贴上搜索并选择“连接”。

显示在“获取事件”向导中选择 Azure DB for PostgreSQL (CDC) 作为源类型的屏幕截图。

配置并连接到 PostgreSQL 数据库 CDC

  1. 在“连接”页上,选择“新建连接”

    显示 Azure PostgreSQL 数据库的“连接”页的屏幕截图,其中突出显示了“新建连接”链接。

  2. 在“连接设置”部分中,输入以下信息。

    • 服务器:PostgreSQL 数据库的服务器地址,例如 my-pgsql-server.postgres.database.azure.com

    • 数据库:数据库名称,例如 my_database

      显示 Azure PostgreSQL 数据库连接器的“连接设置”部分的屏幕截图。

    • 连接名称:输入此连接的名称

    • 身份验证类型,选择“基本”,然后输入数据库的用户名和密码

      注意

      目前,Fabric 事件流仅支持 基本 身份验证。

    • 选择 “连接” 以完成连接设置。 显示 Azure PostgreSQL 数据库连接器的“连接凭据”部分的屏幕截图。

  3. 端口:输入服务器的端口号。 默认值为 5432。 如果在 “管理连接”和“网关”中配置了所选的云连接,请确保端口号与其中设置的端口号匹配。 如果它们不匹配,则 管理连接和网关 中的云连接中的端口号优先。

  4. 从数据库表捕获更改时,可以在两个选项之间进行选择:

    • 所有表:捕获数据库中每个表的更改。
    • 输入表名称(s):允许使用逗号分隔列表指定表的子集。 可以使用完整表标识符(格式 schemaName.tableName)或有效的正则表达式。 例子:
    • dbo.test.*: 选择在 dbo 架构中,名称以 test 开头的所有表。
    • dbo\.(test1|test2):选择 dbo.test1dbo.test2

    可以在列表中合并这两种格式。 整个条目的总字符限制为 102,400 个字符。

  5. 槽名称(可选):输入为从特定数据库/架构的特定插件流式传输变更而创建的 PostgreSQL 逻辑解码槽的名称。 服务器使用此插槽将事件流传输到 Eventstream 流处理连接器。 它必须仅包含小写字母、数字和下划线。

    • 如果未指定,则使用 GUID 创建插槽,需要适当的数据库权限。
    • 如果存在指定的槽名称,连接器将直接使用它。
  6. 可以展开 “高级设置” 以访问 PostgreSQL 数据库 CDC 源的其他配置选项:

    • 发布名称:指定要使用的 PostgreSQL 逻辑复制发布的名称。 这必须与数据库中的现有出版物匹配,否则将根据自动创建模式自动生成。 默认值:dbz_publication

      注意

      连接器用户必须具有超级用户权限才能创建发布。 建议在首次启动连接器之前手动创建出版物,以避免由于权限设置引起的问题。

    • 发布自动创建模式:控制是否以及如何自动创建发布。 选项包括:

      • Filtered (默认值):如果指定的发布件不存在,连接器将创建一个发布件,其中仅包含所选的表(如表包含列表中指定)。
      • AllTables:如果指定的发布存在,连接器会使用它。 如果不存在,连接器会创建一个包含数据库中所有表的表。
      • Disabled:连接器不会创建发布内容。 如果缺少指定的出版物,连接器将引发异常并停止。 在这种情况下,必须在数据库中手动创建出版物。

      有关详细信息,请参阅 有关发布自动创建模式的 Debezium 文档

    • 小数处理模式:指定连接器如何处理 PostgreSQL DECIMALNUMERIC 列值:

      • Precise:表示使用精确小数类型(例如 Java BigDecimal)的值,以确保数据表示形式的完全精度和准确性。
      • Double:将值转换为双精度浮点数。 这可以提高可用性和性能,但可能会导致精度损失。
      • String:将值编码为格式化字符串。 这使得它们在下游系统中易于使用,但会丢失有关原始数值类型的语义信息。
  7. 在“查看 + 连接”页上,查看摘要,然后选择“添加”

    显示为 Azure PostgreSQL 数据库连接器填充了“查看并创建”页的屏幕截图。

注意

一个事件流的源和目标的最大数量为 11

查看更新的事件流

  1. 可以在“编辑模式”下看到添加到事件流的 PostgreSQL 数据库 CDC 源。

    在“编辑视图”中流式处理 PostgreSQL DB CDC 源的屏幕截图。

  2. 要实施这个新添加的 PostgreSQL DB CDC 源,请选择“发布”。 完成这些步骤后,你的 PostgreSQL DB CDC 源可在“实时视图”中进行可视化。

    在“实时视图”中流式处理 PostgreSQL DB CDC 源的屏幕截图。

其他连接器: