启用 API
当目标 Cloud Storage 存储桶与 Datastream 位于同一项目中时,启用 Datastream API 就足够了。
如果您要向另一项目中的存储桶写入数据,则必须向 DataStream 关联的服务账号授予访问此存储桶所需的权限。
- 获取用于服务账号的电子邮件地址。为此,请在 Google Cloud 控制台首页中找到相应的项目编号。服务账号的电子邮件地址将是
service-[project_number]@gcp-sa-datastream.iam.gserviceaccount.com
。 - 向此电子邮件地址授予写入目标存储桶所需的权限(通常是
roles/storage.objectViewer
、roles/storage.objectCreator
和roles/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 开始从当前数据库日志文件(在数据流启动之前创建)中读取数据时,会发生这种情况,并且此日志文件包含一些还由回填捕获的事件。这是预期行为,可以在必要时使用事件元数据来消除重复事件。