配置连接器以用于通过 Pub/Sub 进行的 CDC 复制

本指南介绍如何使用 BigQuery Connector for SAP 通过 Pub/Sub 配置 CDC 复制。

准备工作

了解 Pub/Sub 服务及其术语

请确保您或您的管理员已满足以下前提条件:

安装 BigQuery Connector for SAP

如需使用 Pub/Sub 将数据复制到 BigQuery,请在 SAP 环境中安装 BigQuery Connector for SAP 2.9 版或更高版本。如需了解安装说明,请参阅安装 BigQuery Connector for SAP

如果您使用的是 BigQuery Connector for SAP 2.8 版或更低版本,并且想通过 Pub/Sub 使用 CDC 复制,则必须将连接器更新到最新版本,然后按照迁移步骤操作。

设置身份验证

如需访问 Pub/Sub API,您需要设置对Google Cloud的身份验证。 如需了解支持的身份验证方法以及如何设置身份验证,请参阅 BigQuery Connector for SAP 的身份验证概览

创建死信主题

为了处理 BigQuery 订阅无法写入目标 BigQuery 表的消息,我们建议您创建死信主题。此死信主题充当一个单独的队列,在所有重试尝试失败后,Pub/Sub 会自动将无法送达的消息发布到该队列中。

如需创建死信主题,请创建标准 Pub/Sub 主题。此死信主题在功能上与任何其他 Pub/Sub 主题相同,但其用途专门用于死信消息。您可以为多个复制负载使用单个死信主题,也可以根据需要为每个复制负载配置专用死信主题。

您可以在配置 CDC 复制时指定此死信主题,以便该死信主题接收 Pub/Sub 通过 BigQuery 订阅未能写入 BigQuery 的任何消息。

如需分析失败的消息、重新处理这些消息或调试问题,您可以在死信主题上创建另一个 BigQuery 订阅。此功能可自动执行以下流程:从死信主题中提取消息,然后将其写入专用 BigQuery 表中。如需了解详情,请参阅监控死信主题中的失败消息

如需详细了解死信主题,请参阅死信主题

创建用于 BigQuery Connector for SAP 的 SAP 角色和授权

要使用 BigQuery Connector for SAP,除了标准 SAP LT Replication Server 授权之外,用户还需要随 BigQuery Connector for SAP 提供的自定义事务 /GOOG/SLT_SETTINGS/GOOG/REPLIC_VALID 的权限。

默认情况下,有权访问自定义事务 /GOOG/SLT_SETTINGS/GOOG/REPLIC_VALID 的用户可以修改任何配置的设置,因此如果需要,您可以将相应权限限制为特定配置。对于只需要查看 BigQuery Connector for SAP 设置的用户,您可以向其授予自定义事务 /GOOG/SLT_SETT_DISP 的只读权限。

BigQuery Connector for SAP 传输文件包含 Google BigQuery Settings Authorization 对象 ZGOOG_MTID,用于特定于 BigQuery Connector for SAP 的授权。

如需授予对自定义事务的访问权限并将访问权限限制为特定配置,请执行以下步骤:

  1. 使用 SAP 事务代码 PFCG 为 BigQuery Connector for SAP 定义角色。

  2. 为该角色授予自定义事务 /GOOG/SLT_SETTINGS/GOOG/REPLIC_VALID 的权限。

  3. 要限制某个角色的权限,请使用 ZGOOG_MTID 授权对象指定该角色可以访问的各配置的授权组。例如:

    • BigQuery Connector for SAP 的授权对象 (ZGOOG_MTID):
      • Activity 01
      • Authorization Group AUTH_GROUP_1,AUTH_GROUP_N

    AUTH_GROUP_01AUTH_GROUP_N 是在 SAP LT Replication Server 配置中定义的值。

    ZGOOG_MTID 指定的授权组必须与为 SAP S_DMIS_SLT 授权对象中的角色指定的授权组相匹配。

创建用于查看 BigQuery Connector for SAP 设置的 SAP 角色和授权

如需授予自定义事务 /GOOG/SLT_SETT_DISP 的只读权限,请执行以下步骤:

  1. 使用 SAP 事务代码 PFCG,定义一个角色以用于查看 BigQuery Connector for SAP 设置。

  2. 向该角色授予自定义事务 /GOOG/SLT_SETT_DISP 的访问权限。

  3. 使用以下属性添加 BigQuery Connector for SAP 的授权对象 (ZGOOG_MTID):

    • Activity 03
    • Authorization Group = *
  4. 生成角色配置文件并将相关用户分配到该角色。

配置复制

如需配置复制,请同时指定 BigQuery Connector for SAP 和 SAP LT Replication Server 设置。

创建 SAP LT Replication Server 复制配置

使用 SAP 事务 LTRC 来创建 SAP LT Replication Server 复制配置。

如果 SAP LT Replication Server 运行在不同于源 SAP 系统的服务器上,请在创建复制配置之前,确认两个系统之间具有 RFC 连接。

复制配置中的某些设置会影响性能。要确定适合您的安装的相应设置值,请参阅 SAP 帮助门户中适用于您的 SAP LT Replication Server 版本的性能优化指南

SAP LT Replication Server 的接口和配置选项可能会略有不同,具体取决于您使用的版本。

如需配置复制,请使用对应于您的 SAP LT Replication Server 版本的过程:

在 DMIS 2011 SP17、DMIS 2018 SP02 或更高版本中配置复制

使用以下步骤在较高版本的 SAP LT Replication Server 中配置复制。如果您使用的是较早的版本,请参阅在 DMIS 2011 SP16、DMIS 2018 SP01 或更早版本中配置复制

  1. 在 SAP GUI 中,输入事务代码 LTRC

  2. 点击创建配置图标。此时创建配置向导会打开。

  3. 配置名称描述字段中,输入配置的名称和描述,然后点击下一步

    您可以立即指定授权组,以便将权限限制为特定授权组,也可以稍后执行此操作。

  4. 源系统连接细节面板中执行以下操作:

    • 选择 RFC 连接单选按钮。
    • RFC 目标字段中,指定与源系统之间的 RFC 连接的名称。
    • 根据需要勾选允许多次使用从单个客户端读取复选框。如需了解详情,请参阅 SAP LT Replication Server 文档
    • 点击下一步

    这些步骤适用于 RFC 连接,但如果来源是数据库,那么若您已使用 DBACOCKPIT 事务定义了连接,则可以选择数据库连接

  5. 目标系统连接细节面板中执行以下操作:

    • 选择其他单选按钮。
    • 场景字段中,从下拉菜单中选择 SLT SDK
    • 点击下一步
  6. 指定传输设置面板中执行以下操作:

    1. 数据传输设置部分的应用字段中,输入 /GOOG/SLT_BQZGOOG_SLT_BQ

    2. 作业选项部分的以下字段中输入起始值:

      • 数据传输作业的数量
      • 初始加载作业的数量
      • 计算作业的数量
    3. 复制选项部分中,选择实时单选按钮。

    4. 点击下一步

  7. 对配置进行检查后,点击保存

  8. 记下批量传输列中的三位数 ID。您在后续步骤中要用到它。

如需了解详情,请参阅附加到 SAP 说明 2652704 的 PDF:“使用 SLT SDK 复制数据 - DMIS 2011 SP17、DMIS 2018 SP02.pdf”

在 DMIS 2011 SP16、DMIS 2018 SP01 或更早版本中配置复制

使用以下步骤在较早版本的 SAP LT Replication Server 中配置复制。如果您使用的是较高版本,请参阅在 DMIS 2011 SP17、DMIS 2018 SP02 或更高版本中配置复制

  1. 在 SAP GUI 中,输入事务代码 LTRC
  2. 点击新建。此时将打开一个对话框,用于指定新配置。
  3. 指定来源系统步骤中,执行以下操作:
    • 选择 RFC 连接作为连接类型。
    • 输入 RFC 连接名称。
    • 确保已选中允许多次使用字段。
  4. 指定目标系统步骤中,执行以下操作:
    • 输入目标系统的连接数据。
    • 选择 RFC 连接作为连接类型。
    • RFC 通信场景字段中,从下拉列表中选择使用 BAdI 将数据写入目标值。RFC 连接会自动设置为
  5. 指定传输设置步骤中,按 F4 帮助。您之前定义的应用将显示在应用字段中。
  6. 记下批量传输列中的三位数 ID。您在后续步骤中要用到它。

如需了解详情,请参阅附加到 SAP 说明 2652704 的 PDF:“使用 SLT SDK 复制数据 - DMIS 2011 SP15、SP16 以及 DMIS 2018 SP00、SP01.pdf”

为 BigQuery 创建批量传输配置

使用自定义 /GOOG/SLT_SETTINGS 事务为 BigQuery 配置批量传输并指定表和字段映射。

选择初始批量传输选项

首次输入 /GOOG/SLT_SETTINGS 事务时,选择需要修改 BigQuery 批量传输配置的哪些部分。

如需选择批量传输配置的某个部分,请执行以下操作:

  1. 在 SAP GUI 中,输入以 /n 开头的 /GOOG/SLT_SETTINGS 事务:

    /n/GOOG/SLT_SETTINGS
  2. Google Cloud 合作伙伴字段的下拉菜单中选择 BigQuery CDC via Pub/Sub

  3. /GOOG/SLT_SETTINGS 事务的启动屏幕中,从设置表下拉菜单选择批量传输

    对于新的批量传输配置,请将批量传输键字段留空。

  4. 点击执行图标。此时将显示 BigQuery 设置维护 - 批量传输屏幕。

指定表创建和其他常规特性

在 BigQuery 批量传输配置的初始部分中,您需要确定批量传输配置并指定关联的客户端密钥,此外还需要指定与创建目标 BigQuery 表相关的一些属性。

SAP LT Replication Server 会将批量传输配置保存为 /GOOG/BQ_MASTR 自定义配置表中的记录。

  1. BigQuery 设置维护 - 批量传输屏幕中,点击附加行图标。

  2. 批量传输键字段中,定义此次传输的名称。此名称将成为该批量传输的主键。

  3. 批量传输 ID 字段中,输入创建相应 SAP LT Replication Server 复制配置时生成的三位数 ID。

  4. 若要使用源字段的标签或简短说明作为 BigQuery 中目标字段的名称,请点击使用自定义名称标志复选框。如需详细了解字段名称,请参阅字段的默认命名选项

  5. 要存储触发插入的更改类型,并启用源表、SAP LT Replication Server 统计信息和 BigQuery 表之间的记录计数验证,请选中额外字段标志复选框。

    设置此标志后,BigQuery Connector for SAP 会向 BigQuery 表架构添加列。如需了解详情,请参阅用于记录更改和计数查询的额外字段

  6. 为了在遇到包含数据错误的记录时停止发送数据,系统会默认勾选 Break at First Error Flag(在遇到第一个错误标志时中断)复选框。我们建议将此选项保留为选中状态。如需了解详情,请参阅 BREAK 标志

  7. (可选)如需在数据块的字节大小超过 Pub/Sub接受的 HTTP 请求的最大字节大小时自动减小数据块大小,请点击动态数据块大小标志复选框。如需详细了解动态数据块大小,请参阅动态数据块大小

  8. 如果遇到包含数据错误的记录,并且您希望跳过该记录并继续将记录插入 BigQuery 表中,请点击跳过无效记录标志复选框。我们建议您不要选中此复选框。如需了解详情,请参阅 SKIP 标志

  9. Google Cloud 密钥名称字段中,输入 /GOOG/CLIENT_KEY 配置中指定的客户端密钥的名称。

    BigQuery Connector for SAP 会自动从 /GOOG/CLIENT_KEY 配置中检索 Google Cloud 项目标识符

  10. BigQuery 数据集字段中,输入您在此过程先前的步骤中创建的目标 BigQuery 数据集的名称。

  11. 设置已激活标志字段中,点击复选框以启用批量传输配置。

  12. 点击保存

    批量传输记录会附加到 /GOOG/BQ_MASTR 表中,系统会自动填充更改者更改时间更改位置字段。

  13. 点击显示表

    系统会显示新的批量传输记录,随后显示表特性条目面板。

指定表特性

您可以在 /GOOG/SLT_SETTINGS 事务的第二个部分中指定表特性(例如表名称和表分区),以及发送到 BigQuery 的每次传输或每个数据块中要包含的记录数。

您指定的设置将以记录形式存储在 /GOOG/BQ_TABLE 配置表中。

如需指定表属性,请执行以下操作:

  1. 点击附加行图标。

  2. SAP 表名称字段中,输入源 SAP 表的名称。

  3. 外部表名称字段中,提供目标 BigQuery 表名称。如果目标表尚不存在,则 BigQuery Connector for SAP 会根据 SAP 表定义内嵌创建此表。它还定义了此表中的主键,以启用 UPSERTDELETE 操作。该表支持最多包含 16 列的复合主键。如需了解 BigQuery 的表命名惯例,请参阅表命名

  4. 跳过发送未压缩标志。对于通过 Pub/Sub 进行的 CDC 复制,不支持记录压缩功能。

  5. (可选)在数据块大小字段中,指定要发送到 Pub/Sub的每个数据块中可包含的记录数上限。我们建议您对 BigQuery Connector for SAP 使用默认数据块大小,即 1,000 条记录。这是 Pub/Sub 允许的最大记录数。

    如果源记录包含大量字段,则字段数可能会增加数据块的总字节大小,从而导致数据块错误。如果发生这种情况,请尝试减小数据块大小,从而缩小字节大小。如需了解详情,请参阅 BigQuery Connector for SAP 中的数据块大小。或者,如需自动调整数据块大小,请启用动态数据块大小。如需了解详情,请参阅动态数据块大小

  6. (可选)在分区类型字段中,指定用于分区的时间增量。有效值为 HOURDAYMONTHYEAR。 如需了解详情,请参阅表分区

  7. (可选)在分区字段字段中,指定包含用于分区的时间戳的目标 BigQuery 表中的一个字段名称。指定字段分区时,还必须指定类型分区。如需了解详情,请参阅表分区

  8. 设置已激活标志字段中,点击复选框以启用表特性。如果未勾选设置已激活标志框,BigQuery Connector for SAP 会使用 SAP 源表名称和默认块大小创建 BigQuery 表,且没有分区。

  9. 对于通过 Pub/Sub 进行的 CDC 复制,请指定以下属性:

    1. 如需通过 Pub/Sub 启用 CDC 复制到 BigQuery,请选中 Repl CPS(复制 Cloud Pub/Sub)复选框。

      如果此复选框处于未选中状态,BigQuery Connector for SAP 会使用流式数据复制,并且与 Pub/Sub 相关的配置字段处于停用状态。

    2. Pub/Sub 架构字段中,输入 Pub/Sub 架构的名称。 BigQuery Connector for SAP 会自动创建或更新现有 Avro 架构,以与 SAP 表定义相匹配。

    3. Pub/Sub 主题字段中,输入将发布消息的 Pub/Sub 主题的名称。BigQuery Connector for SAP 会自动创建主题。

    4. Pub/Sub 订阅字段中,输入 BigQuery 订阅的名称,该订阅会从 Pub/Sub 主题中提取消息并写入 BigQuery。BigQuery Connector for SAP 会自动创建订阅,并将其与上一步中指定的主题相关联。

    5. 死信队列字段中,输入 Pub/Sub 死信主题的名称。此死信主题接收 Pub/Sub 无法通过 BigQuery 订阅写入 BigQuery 的消息。如需详细了解死信主题,请参阅创建死信主题

    6. 如需为表启用变更数据捕获 (CDC) 功能,请选中 Act. CDC(启用 CDC)复选框。

    7. 如需优化初始加载的性能,请选中 Cache Val(缓存验证)复选框。

      选择此字段后,连接器可为大型数据传输提供最高性能。系统会定期运行 Google Cloud 流水线验证并缓存结果。 该连接器可快速转换数据,并将数据直接发送到 Pub/Sub。如需了解详情,请参阅缓存验证

  10. 点击保存

    您的特性将以记录形式存储在 /GOOG/BQ_TABLE 配置表中,系统会自动填充更改者更改时间更改位置字段。

  11. 点击显示字段

    此时会显示新的表特性记录,后接字段映射条目面板。

自定义默认字段映射

如果源 SAP 表包含时间戳字段或布尔值,请更改默认数据类型映射,以准确反映目标 BigQuery 表中的数据类型。

您还可以更改其他数据类型以及用于目标字段的名称。

您可以直接在 SAP GUI 中修改默认映射,也可以将默认映射导出到电子表格或文本文件,以便其他人无需访问 SAP LT Replication Server 即可修改值。

如需详细了解默认字段映射以及您可以执行的更改,请参阅数据类型映射

如需自定义目标 BigQuery 字段的默认映射,请执行以下操作:

  1. 在事务 /GOOG/SLT_SETTINGSBigQuery 设置维护 - 字段页面中,显示您正在配置的批量传输的默认字段映射。

  2. 根据需要在 AVRO 类型列中修改字段的目标 Avro 类型。 具体来说,应该更改以下 Avro 类型的目标 Avro 类型:

    • 布尔值。将默认目标Avro类型从 STRING 更改为 BOOLEAN
    • 十六进制。将默认目标Avro类型从 STRING 更改为 BYTES

    如需修改 Avro 类型,请执行以下操作:

    1. 在需要修改的字段所在的行上,点击 Avro 类型字段。
    2. 在选择 Avro 类型的对话框中,选择所需的 BigQuery 数据类型。
    3. 确认您的更改,然后点击保存
  3. 根据需要修改外部数据元素列中的默认目标数据类型。具体来说,应该更改以下数据类型的目标数据类型:

    • 时间戳。将默认目标数据类型从 NUMERIC 更改为 TIMESTAMPTIMESTAMP (LONG)
    • 布尔值。将默认目标数据类型从 STRING 更改为 BOOLEAN
    • 十六进制。将默认目标数据类型从 STRING 更改为 BYTES

    要修改默认数据类型映射,请执行以下操作:

    1. 在需要修改的字段所在的行上,点击外部数据元素字段。
    2. 在选择数据类型的对话框中,选择所需的 BigQuery 数据类型。
    3. 确认您的更改,然后点击保存
  4. 如果您在 BigQuery 设置维护 (BigQuery Settings Maintenance) 页面中指定了自定义名称标志,则可以根据需要在临时字段名称 (Temporary Field Name) 列中修改默认目标字段名称。

    您指定的值会替换外部字段名称列中显示的默认名称。

  5. 根据需要修改字段说明列中的默认目标字段说明。

  6. (可选)导出字段映射以进行外部修改。如需了解相关说明,请参阅在 CSV 文件中修改 BigQuery 字段映射

  7. 完成所有更改并且上传所有外部修改的值后,确认已选中设置已激活标志复选框。如果未选中设置已激活标志,BigQuery Connector for SAP 会使用默认值创建目标表。

  8. 点击保存

    更改将存储在 /GOOG/BQ_FIELD 配置表中,系统会自动填充更改者更改时间更改位置字段。

启用令牌缓存

为了提高复制性能,我们建议您为从 Google Cloud中检索到的访问令牌启用缓存。

启用令牌缓存可确保在访问令牌过期或被撤消之前重复使用访问令牌,从而减少用于检索新访问令牌的 HTTP 调用次数。

如需启用令牌缓存,请在客户端密钥表 /GOOG/CLIENT_KEY 中选择令牌缓存标志。

启用令牌缓存后,访问令牌将缓存在 SAP LT Replication Server 应用服务器的共享内存中,缓存时长为 /GOOG/CLIENT_KEY 表中的令牌刷新秒数字段设置的时长。如果未指定令牌刷新秒数或设置为 0,则访问令牌缓存时长为高级设置中的 CMD_SECS_DEFLT 参数中指定的值。

对于未在 Google Cloud上运行的 SAP 工作负载,缓存的访问令牌还会防止在复制大量数据负载时可能会出现的技术问题,其中多个 SAP LT Replication Server 进程可能会在任何给定时间同时请求访问令牌。

对于在 Google Cloud 上运行并使用用户管理的服务账号访问 BigQuery 或 Pub/Sub 的 SAP 工作负载,令牌缓存可显著提高访问令牌的检索性能,因为此场景涉及进行两次 HTTP 调用。

清除缓存的访问令牌

启用令牌缓存后,如果您更新分配给 BigQuery Connector for SAP 用于访问 BigQuery 或 Pub/Sub 的服务账号的角色,则更新后的角色对应的新访问令牌将在现有的缓存令牌到期后才会被检索。在这种情况下,您可以手动清除访问令牌。

如需清除缓存的访问令牌,请输入事务 SE38,然后运行程序 /GOOG/R_CLEAR_TOKEN_CACHE

测试复制配置

通过启动数据预配来测试复制配置:

  1. 在 SAP GUI 中打开 SAP LT Replication Server Cockpit(事务 LTRC)。

  2. 点击要测试的表复制对应的批量传输配置。

  3. 点击数据预配

  4. 数据预配面板中,开始进行数据预配:

    1. 输入源表的名称。
    2. 点击要测试的数据预配类型对应的单选按钮。例如,开始加载
    3. 点击执行图标。此时数据传输将会开始,参与对象屏幕上会显示其进度。

      如果 BigQuery 中不存在该表,则 BigQuery Connector for SAP 会根据您先前通过 /GOOG/SLT_SETTINGS 事务定义的表和字段特性构建的架构来创建表。

      表初始加载所需的时间取决于表及其记录的大小。

      消息写入事务 LTRC 中的 SAP LT Replication Server 应用日志部分。

验证复制

您可以使用以下方法验证复制:

  • 在 SAP LT Replication Server 中执行以下操作:
    • 数据预配屏幕上监控复制。
    • 应用日志屏幕中检查错误消息。
  • 在 BigQuery 的表信息标签页上执行以下操作:

    • 检查架构标签页,确保架构正确无误。
    • 查看预览标签页,查看所插入的行的预览。
    • 查看详细信息标签页,了解插入的行数、表的大小以及其他信息。

在 SAP LT Replication Server 中检查复制

在启动初始加载或复制作业后,使用事务 LTRC 可以查看其进度,并检查错误消息。

您可以在 SAP LT Replication Server 的加载统计信息标签页下查看加载状态,并在数据传输监控标签页下查看作业进度。

在事务 LTRC应用日志屏幕上,您可以看到 BigQuery、BigQuery Connector for SAP 和 SAP LT Replication Server 返回的所有消息。

在 SAP LT Replication Server 中,由 BigQuery Connector for SAP 代码发出的消息以 /GOOG/SLT 前缀开头。从 BigQuery API 返回的消息以 /GOOG/MSG 前缀开头。

SAP LT Replication Server 返回的消息不会以 /GOOG/ 前缀开头。

在 BigQuery 中检查复制

在 Google Cloud 控制台中,确认表已创建,并且 BigQuery 正在向其中插入数据。

  1. 在 Google Cloud 控制台中,前往 BigQuery 页面。

    转到 BigQuery

  2. 探索器部分的搜索字段中,输入目标 BigQuery 表的名称,然后按 Enter

    表信息显示在页面右侧内容窗格中的一个标签页下。

  3. 在表信息部分中,点击以下标题以检查表和行插入情况:

    • 预览,显示插入 BigQuery 表的行和字段。
    • 架构,显示字段名称和数据类型。
    • 详细信息,显示表大小、总行数和其他详细信息。

问题排查

如需了解如何诊断和解决在配置 BigQuery Connector for SAP 时可能遇到的问题,请参阅 BigQuery Connector for SAP 问题排查指南

获取支持

如果您需要帮助以解决 BigQuery Connector for SAP 配置问题,请收集所有可用的诊断信息,并与 Cloud Customer Care 团队联系。如需了解如何与 Customer Care 团队联系,请参阅获取 SAP on Google Cloud支持