配置 Cloud Storage 目标

通过在 Datastream 中将数据流式传输到 Cloud Storage,您可以将源更改事件存储在 Google Cloud 名为存储桶的对象容器中。将数据复制到 Cloud Storage 存储桶时,Datastream 会按对象名称和事件时间戳整理文件,以便通过 Cloud Storage API 使用。

如需配置目标位置,请启用 Datastream API 并指定目标存储桶和文件前缀。如果您的存储桶位于其他项目中,请同时授予跨项目服务账号权限。

启用 API

如果目标 Cloud Storage 存储桶与 Datastream 位于同一项目中,则只需启用 Datastream API 即可。

如果您要向另一项目中的存储桶写入数据,则必须向 DataStream 关联的服务账号授予访问此存储桶所需的权限。

  1. 获取用于服务账号的电子邮件地址。为此,请在 Google Cloud 控制台首页中找到相应的项目编号。服务账号的邮箱将为 service-[project_number]@gcp-sa-datastream.iam.gserviceaccount.com。
  2. 向此电子邮件地址授予写入目标存储桶所需的权限(通常是 roles/storage.objectViewer、roles/storage.objectCreator 和 roles/storage.legacyBucketReader 权限)。

指定目标存储桶和前缀

在数据流配置中提供项目名称、存储桶名称和可选文件前缀,以确定数据的写入位置。

写入行为

  • 给定数据流的数据将写入提供的存储桶或文件前缀,位置为 [bucket]/[prefix]/[object name]/yyyy/mm/dd/hh/mm/[filename(idempotent)]。
  • 数据库源路径中的对象名称是架构名称,后跟表名称(以下划线“_”分隔)。
  • 路径中的时间戳 (hh/mm) 是事件元数据中的源时间戳。
    • 对于回填事件,时间戳表示从来源提取数据的时间。对于 Salesforce 数据源,时间戳表示上次更改记录的时间。
    • 对于 CDC 事件,时间戳表示记录在来源上发生更改的时间。
  • 每当达到文件大小上限或超时上限(以先发生者为准),就会轮替文件。您可以使用 Datastream API 调整文件大小上限和超时值上限。
  • 此外,每次检测到源架构更改时(例如添加新列),都会轮替文件。
  • 同一路径中同一分钟可能有多个文件。
  • 您可以根据 Cloud Storage API 使用数据。
  • 将数据流式传输到 Cloud Storage 时,事件大小上限为 100 MB。
  • 源列名称中的每个非字母数字字符都会在目标文件中替换为下划线 (_)。

在某些情况下(最常见的是在数据流首次开始运行时),回填和 CDC 之间会发生重叠,从而导致事件重复。当 Datastream 开始从当前数据库日志文件(在数据流启动之前创建)中读取数据时,会发生这种情况,并且此日志文件包含一些还由回填捕获的事件。这是预期行为,可以在必要时使用事件元数据来消除重复事件。

后续步骤