配置 Cloud Storage 目标位置

启用该 API

当目标 Cloud Storage 存储桶与 Datastream 位于同一项目中时,启用 Datastream API 就足够了。

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

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

指定目标存储桶和前缀

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

写入行为

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

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