通过 Pub/Sub 迁移到 CDC 复制

本文档介绍了如何在使用 BigQuery Connector for SAP 时从流式数据复制迁移到通过 Pub/Sub 进行 CDC 复制

如果您是现有 BigQuery Connector for SAP 用户,并且希望 BigQuery 表直接反映源 SAP 表中的更改,则可以通过 Pub/Sub 使用 CDC 复制。当 SAP 中的数据发生更改时,BigQuery Connector for SAP 会捕获这些更改,通过 Pub/Sub 将其直接发送到 BigQuery 表,并应用这些更改而不会出现重复。

准备工作

在开始之前,请先了解 Pub/Sub 服务及其术语

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

更新 BigQuery Connector for SAP

如需通过 Pub/Sub 使用 CDC 复制,请将 BigQuery Connector for SAP 更新到 2.9 版或更高版本。如需了解如何更新连接器,请参阅更新 BigQuery Connector for SAP

启用 Google Cloud API

对于通过 Pub/Sub 进行的 CDC 复制,请确保已启用以下 API:

  • Pub/Sub API
  • BigQuery API
  • IAM 服务账号凭据 API

如需了解如何启用 Google Cloud API,请参阅启用 API

设置身份验证

如需通过 Pub/Sub 使用 CDC 复制,除了现有的 BigQuery 角色之外,您还需要向用于授权的服务账号授予 Pub/Sub Editor 角色。请确保服务账号具有以下角色:

  • Pub/Sub Editor
  • BigQuery Data Editor
  • BigQuery Job User

如需了解如何授予角色,请参阅授予单个角色

如需了解支持的身份验证方法以及如何设置身份验证,请参阅设置身份验证

创建死信主题

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

迁移步骤

请按照以下概要迁移步骤操作:

  1. 停止 SAP LT Replication Server 复制配置
  2. 准备去重后的 CDC 表
  3. 通过 BigQuery Connector for SAP 启动迁移
  4. 配置复制设置
  5. 激活 SAP LT Replication Server 复制配置
  6. 在 BigQuery 中检查复制

停止 SAP LT Replication Server 复制配置

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

  2. 停止要迁移的 SAP LT Replication Server 复制配置。

准备去重后的 CDC 表

在 BigQuery 中,您需要通过现有 BigQuery 暂存表创建去重后的 CDC 表。如果您通过 Pub/Sub 使用 CDC 复制,此 CDC 表将成为 BigQuery 中 SAP 数据的外部表。

如需准备去重后的 CDC 表,请执行以下操作:

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

    转到 BigQuery

  2. 点击编写新查询

  3. 通过现有 BigQuery 暂存表创建 CDC 表:

    1. 查询编辑器文本区域中,输入以下查询以复制现有 BigQuery 暂存表结构:

      CREATE TABLE CDC_TABLE LIKE STAGING_TABLE

      替换以下内容:

      • CDC_TABLE:BigQuery CDC 表的名称。
      • STAGING_TABLE:BigQuery 暂存表的名称。
    2. 点击运行

    此步骤会创建一个没有主键的 CDC 表结构。

  4. 修改 CDC 表定义以添加主键:

    1. 查询编辑器文本区域中,输入以下查询以添加主键:

      ALTER TABLE CDC_TABLE ADD PRIMARY KEY(PRIMARY_KEYS) NOT INFORCED

      替换以下内容:

      • CDC_TABLE:CDC 表的名称。
      • PRIMARY_KEYS:以英文逗号分隔列表形式表示的主键。您可以从源 SAP 表中检索主键列表。
    2. 点击运行

  5. 对 CDC 表进行去重:

    1. 查询编辑器文本区域中,输入以下查询以对 CDC 表进行去重:

      INSERT INTO CDC_TABLE (COLUMN_NAMES )
      SELECT COLUMN_NAMES FROM STAGING_TABLE WHERE is_deleted = false QUALIFY ROW_NUMBER() OVER( PARTITION BY PRIMARY_KEYS ORDER BY recordstamp DESC ) = 1

      替换以下内容:

      • CDC_TABLE:CDC 表的名称。
      • COLUMN_NAMES:以英文逗号分隔列表形式表示的列名称。您可以从 SAP 源系统中检索列名称列表。或者,使用星号 (*) 选择所有列。
      • PRIMARY_KEYS:CDC 表的主键。
      • STAGING_TABLE:暂存表的名称。
    2. 点击运行

或者,您也可以使用 BigQuery Studio 中的复制选项复制源暂存表结构并创建 CDC 表。

通过 BigQuery Connector for SAP 启动迁移

  1. 在 SAP GUI 中,输入以 /n 开头的 /GOOG/SLT_SETTINGS 事务:
    /n/GOOG/SLT_SETTINGS
  2. Google Cloud 合作伙伴字段的下拉菜单中选择 BigQuery
  3. /GOOG/SLT_SETTINGS 事务的启动屏幕中,从设置表下拉菜单选择批量传输
  4. Mass Transfer Key 字段中,指定要迁移的 SAP LT Replication Server 复制配置的批量传输 ID。
  5. 点击 Execute 图标。
  6. BigQuery Settings Maintenance - Mass Transfers 屏幕中,点击 Migrate
  7. 在迁移确认对话框中,点击 Yes

配置复制设置

  1. 在 SAP GUI 中,输入以 /n 开头的 /GOOG/SLT_SETTINGS 事务:
    /n/GOOG/SLT_SETTINGS
  2. Google Cloud Partner 字段中的下拉菜单中,选择 BigQuery CDC via Pub/Sub
  3. /GOOG/SLT_SETTINGS 事务的启动屏幕中,从设置表下拉菜单选择批量传输
  4. Mass Transfer Key 字段中,指定您在通过 BigQuery Connector for SAP 启动迁移部分中迁移的 SAP LT Replication Server 复制配置的批量传输 ID。
  5. 点击执行图标。此时会显示 BigQuery Settings Maintenance - Mass Transfers 屏幕。
  6. 验证是否显示了迁移的 SAP LT Replication Server 复制配置。
  7. 对于 SAP LT Replication Server 复制配置,请指定以下表属性:

    1. External Table Name 字段中,输入您在上一步准备去重后的 CDC 表中创建的 CDC 表的名称。

    2. 如需通过 Pub/Sub 启用 CDC 复制到 BigQuery 的功能,请选中 Repl CPS 复选框。

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

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

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

    6. Dead Letter Queue 字段中,输入 Pub/Sub 死信主题的名称。此死信主题会接收 Pub/Sub 无法通过 BigQuery 订阅写入 BigQuery 的消息。

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

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

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

激活 SAP LT Replication Server 复制配置

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

  2. 激活配置。

    激活配置会创建所有必要的 Pub/Sub 相关资源并启动复制。配置的 CDC 表会反映所有新的未处理更改。

在 BigQuery 中检查复制

在 BigQuery 中,验证 CDC 表中的值是否与源 SAP 表中的值相同。如需详细了解如何执行此操作,请参阅验证到 BigQuery 的复制

问题排查

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

获取支持

如果您在解决迁移步骤问题时需要帮助,请收集所有可用的诊断信息并与 Cloud Customer Care 联系。如需了解如何与 Customer Care 团队联系,请参阅获取 SAP on Google Cloud支持