本文档介绍了如何在使用 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 会自动将无法送达的消息发布到该主题。
迁移步骤
请按照以下概要迁移步骤操作:
- 停止 SAP LT Replication Server 复制配置。
- 准备去重后的 CDC 表。
- 通过 BigQuery Connector for SAP 启动迁移。
- 配置复制设置。
- 激活 SAP LT Replication Server 复制配置。
- 在 BigQuery 中检查复制。
停止 SAP LT Replication Server 复制配置
在 SAP GUI 中,输入事务代码
LTRC
。停止要迁移的 SAP LT Replication Server 复制配置。
准备去重后的 CDC 表
在 BigQuery 中,您需要通过现有 BigQuery 暂存表创建去重后的 CDC 表。如果您通过 Pub/Sub 使用 CDC 复制,此 CDC 表将成为 BigQuery 中 SAP 数据的外部表。
如需准备去重后的 CDC 表,请执行以下操作:
在 Google Cloud 控制台中,前往 BigQuery 页面。
点击编写新查询。
通过现有 BigQuery 暂存表创建 CDC 表:
在查询编辑器文本区域中,输入以下查询以复制现有 BigQuery 暂存表结构:
CREATE TABLE CDC_TABLE LIKE STAGING_TABLE
替换以下内容:
CDC_TABLE
:BigQuery CDC 表的名称。STAGING_TABLE
:BigQuery 暂存表的名称。
点击运行。
此步骤会创建一个没有主键的 CDC 表结构。
修改 CDC 表定义以添加主键:
在查询编辑器文本区域中,输入以下查询以添加主键:
ALTER TABLE CDC_TABLE ADD PRIMARY KEY(PRIMARY_KEYS) NOT INFORCED
替换以下内容:
CDC_TABLE
:CDC 表的名称。PRIMARY_KEYS
:以英文逗号分隔列表形式表示的主键。您可以从源 SAP 表中检索主键列表。
点击运行。
对 CDC 表进行去重:
在查询编辑器文本区域中,输入以下查询以对 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
:暂存表的名称。
点击运行。
或者,您也可以使用 BigQuery Studio 中的复制选项复制源暂存表结构并创建 CDC 表。
通过 BigQuery Connector for SAP 启动迁移
- 在 SAP GUI 中,输入以
/n
开头的/GOOG/SLT_SETTINGS
事务:/n/GOOG/SLT_SETTINGS
- 从 Google Cloud 合作伙伴字段的下拉菜单中选择 BigQuery。
- 在
/GOOG/SLT_SETTINGS
事务的启动屏幕中,从设置表下拉菜单选择批量传输。 - 在 Mass Transfer Key 字段中,指定要迁移的 SAP LT Replication Server 复制配置的批量传输 ID。
- 点击 Execute 图标。
- 在 BigQuery Settings Maintenance - Mass Transfers 屏幕中,点击 Migrate。
- 在迁移确认对话框中,点击 Yes。
配置复制设置
- 在 SAP GUI 中,输入以
/n
开头的/GOOG/SLT_SETTINGS
事务:/n/GOOG/SLT_SETTINGS
- 从 Google Cloud Partner 字段中的下拉菜单中,选择 BigQuery CDC via Pub/Sub。
- 在
/GOOG/SLT_SETTINGS
事务的启动屏幕中,从设置表下拉菜单选择批量传输。 - 在 Mass Transfer Key 字段中,指定您在通过 BigQuery Connector for SAP 启动迁移部分中迁移的 SAP LT Replication Server 复制配置的批量传输 ID。
- 点击执行图标。此时会显示 BigQuery Settings Maintenance - Mass Transfers 屏幕。
- 验证是否显示了迁移的 SAP LT Replication Server 复制配置。
对于 SAP LT Replication Server 复制配置,请指定以下表属性:
在 External Table Name 字段中,输入您在上一步准备去重后的 CDC 表中创建的 CDC 表的名称。
如需通过 Pub/Sub 启用 CDC 复制到 BigQuery 的功能,请选中 Repl CPS 复选框。
在 Pub/Sub Schema 字段中,输入 Pub/Sub 架构的名称。BigQuery Connector for SAP 会自动创建或更新现有 Avro 架构,以与 SAP 表定义相匹配。
在 Pub/Sub Topic 字段中,输入将消息发布到的 Pub/Sub 主题的名称。BigQuery Connector for SAP 会自动创建主题。
在 Pub/Sub Subscription 字段中,输入使用 Pub/Sub 主题中的消息并写入 BigQuery 的 BigQuery 订阅的名称。BigQuery Connector for SAP 会自动创建订阅,并将其与上一步中指定的主题相关联。
在 Dead Letter Queue 字段中,输入 Pub/Sub 死信主题的名称。此死信主题会接收 Pub/Sub 无法通过 BigQuery 订阅写入 BigQuery 的消息。
如需为表启用变更数据捕获 (CDC) 功能,请选中 Act. CDC(激活 CDC)复选框。
如需优化初始加载的性能,请选中 Cache Val(缓存验证)复选框。
选择此字段后,连接器可为大型数据传输提供最高性能。系统会定期运行 Google Cloud 流水线验证并缓存结果。连接器可快速转换数据,并将数据直接发送到 Pub/Sub。如需了解详情,请参阅缓存验证。
激活 SAP LT Replication Server 复制配置
在 SAP GUI 中,输入事务代码
LTRC
。激活配置。
激活配置会创建所有必要的 Pub/Sub 相关资源并启动复制。配置的 CDC 表会反映所有新的未处理更改。
在 BigQuery 中检查复制
在 BigQuery 中,验证 CDC 表中的值是否与源 SAP 表中的值相同。如需详细了解如何执行此操作,请参阅验证到 BigQuery 的复制。
问题排查
如需了解如何诊断和解决在迁移复制时可能遇到的问题,请参阅 BigQuery Connector for SAP 问题排查指南。
获取支持
如果您在解决迁移步骤问题时需要帮助,请收集所有可用的诊断信息并与 Cloud Customer Care 联系。如需了解如何与 Customer Care 团队联系,请参阅获取 SAP on Google Cloud支持。