常见问题解答

概览

在本主题中,您将找到有关使用数据流的常见问题解答。此常见问题解答涉及以下内容:

  • 关于数据流和变更数据捕获 (CDC) 的常见问题
  • MySQL 变更数据捕获 (CDC)
  • Oracle 变更数据捕获 (CDC)
  • 数据流使用的常见用例
  • Datastream 如何与 Google Cloud 数据服务集成
  • 关于数据流和 GA 版本的信息
  • Datastream 的行为和限制
  • 安全性和连接
  • 处理数据流文件
  • 监控数据流
  • 价格
  • 关于数据流的其他信息

关于数据流和变更数据捕获 (CDC) 的常见问题

问题 回答
什么是数据流?

Datastream 是一项无服务器且易于使用的更改数据捕获 (CDC) 和复制服务,让您能够以异乎可靠的数据库和应用同步数据流,并且延迟极低。Datastream 支持将对 Oracle 和 MySQL 数据库的数据流式插入到 Cloud Storage 中。

借助该服务,您可以简化与 Dataflow 模板的集成,为 BigQuery 提供最新具体化视图、将数据库复制到 Cloud SQL 或 Cloud Spanner 以进行数据库同步,或者直接从 Cloud Storage 使用数据流实现事件驱动型架构中下载 Google 健身应用。如果您想构建含有 BigQuery 转换的数据流水线,Datastream 还会与 Cloud Data Fusion 集成。

什么是 CDC?

CDC 是一种数据集成的方法,让您可以使用更少的系统资源更快速地集成和分析数据。此方法是一种仅从数据源中提取最新更改(更新、插入或删除)的方法,通常通过读取数据源为其内部事务完整性维护的更改日志。

CDC 是一种非常高效的机制,可在将新数据加载到操作数据存储区和数据仓库时对源的影响施加限制,且无需启用增量加载或实时流式处理,只需启用增量加载或实时流式更改数据目标。

CDC 可用于许多用例,这些 API 可在发生数据变化时从常量访问中获得价值,例如分析、跨地理位置分布式系统同步数据以及事件驱动型架构。

什么是补余? 除了正在进行的更改之外,Datastream 还使用回填从来源拉取所有现有数据,然后将数据流式传输到目标位置。因此,目标是用来源中的所有历史数据“回填”。
Datastream 流式传输数据的方法有哪些? Datastream 通过以下两种方法之一将数据从来源流式传输到目标位置:
  • CDC:实时捕获来自源的更改。
  • 回填:提供表中存在的数据的历史快照。
什么是变化流? 变更流是数据流向目标位置(如 Cloud Storage)发送下游事件的一系列事件。更改流中写入目标的结果是一组文件,其中包含一段时间内来自特定数据库表的更改事件。这些事件表示从来源对该表的插入、更新和删除,并且可通过 Dataflow 等事件实现目标的下游消耗和处理这些事件。
什么是材料化视图?

具体化视图是目标表中源表的最新一对一表示。此类视图的示例是一个 Oracle 数据库表,在此表中的更改会不断复制到 BigQuery 表中。因此,在使用 Oracle 表流式传输的更改时,BigQuery 表格会保持最新。

具体化视图可利用更改事件并使用它来更新具体化视图,从而利用更改流。Datastream 使用与 Dataflow 集成的方案,将具体化视图传送到 BigQuery、Cloud SQL 和 Cloud Spanner 等目标,并可从目标中提取更改流事件的模板并相应地更新目标表。

Datastream 是否需要来源上的代理? 您无需在来源上安装代理。Datastream 使用现有接口(例如 Oracle LogMiner)从来源中提取数据。
Datastream 在使用生产数据库时对性能有何影响?

CDC 是一种非常高效的机制,可在将新数据加载到目标数据存储区和数据仓库时限制对源的影响。此外,CDC 还无需进行批量加载和实时流式插入,使得数据更改得以实时转换为目标,因此无需进行批量加载更新和无缝批量更新。

此外,Datastream 通过限制同步回填任务的数量,最大程度减少初始回填的影响,并且让您控制要回填哪些对象以及何时释放这些对象。

您能否将源中的日志文件复制到 Google Cloud? 不会。Datastream 直接在数据库服务器上查询日志,并且只有对指定表的更改才会写入目标位置。
Datastream 还可以转移历史数据吗? 可以。默认情况下,Datastream 会从您指定的来源的数据库表中(与 CDC 数据流并行)获取所有历史数据。Datastream 让您可以灵活地从来源中的部分或全部数据库表获取历史数据。此外,您在配置视频流时,还可以选择停用历史回填。
Datastream 支持的最大行大小是多少? 数据流目前限制为行数不超过 3 MB。
Datastream 保证排序吗? 数据流不保证排序。它提供每个事件的其他元数据,可用于确保目标存储分区中的最终一致性。根据来源、速率和频率和其他参数,通常可以在 1 小时内完成最终一致性。
Datastream 是否保证正好送达一次? 否。数据流至少有一次送达。Datastream 写入每个事件的其他元数据可用于移除重复的数据。
Datastream 如何处理来源的架构更改? 数据流定期从来源中提取架构。然而,在架构提取期间,部分架构更改可能无法被检测到,可能会导致数据差异。我们计划实时捕获数据定义语言事件,这将解决当前的限制。
您是否处理加密数据库? 可以。
DataStream 是否可以从来源流式传输特定表和列? 可以。借助数据流,您可以为表和架构指定包含和排除列表,以便只将所需来源的数据流式传输到目标位置。对于包含的表格,您可以排除表格的特定列,从而精确调整要流式传输到目标位置的数据。但是,无法复制经过编号的视图。
如何将数据流移动到另一个项目或区域?
  1. 在采用与现有数据流配置相同的新区域或项目中创建数据流,但不要选中回填历史数据复选框。
  2. 启动您创建的数据流
  3. 创建的视频流处于 RUNNING 状态后,暂停现有数据流
  4. (可选)选中回填历史数据复选框,以修改新数据流。日后添加到数据流中的表格内的现有数据会从来源流式传输到目标位置。

MySQL 变更数据捕获 (CDC)

问题 回答
Datastream 如何从 MySQL 中获取数据? Datastream 使用 MySQL 的二进制日志从 MySQL 中提取更改事件。

Oracle 变更数据捕获 (CDC)

问题 回答
数据流如何从 Oracle 获取数据? Datastream 使用 Oracle LogMiner 从 Oracle 的重做日志中提取数据。
Datastream 是否需要 Oracle 的黄金订阅? 不会。Datastream 使用 Oracle LogMiner 从数据库的重做日志中读取数据。
如果 Oracle LogMiner 不再受支持,会出现什么情况? 今后发布的版本将支持 Oracle。目前,Oracle LogMiner 已全面推出所有 Oracle 版本。
Datastream 是否支持 Oracle 多租户架构,尤其是容器数据库 (CDB) 和可插入数据库 (PDB)? 数据流目前不支持 CDB 和 PDB,但这是我们的路线图。

使用场景

问题 回答
使用数据流有哪些常见使用场景?

Datastream 是一项 CDC 和复制服务,这意味着它能够灵活地应对持续使用变化变化的数据的能力。数据流的常见最常见情况是:

  1. 分析:通过将数据流与 Dataflow 模板集成以将数据加载到 BigQuery,您可以获取 BigQuery 中源数据的最新具体化视图。您可以使用此持续更新的数据为数据构建最新的信息中心。例如,这可用于监控系统和获取有关业务状态的最新数据洞见。
  2. 数据库复制和同步情景:通过将数据流与 Dataflow 模板集成以将数据加载到 Cloud SQL 或 Cloud Spanner 中,您可以获取这些数据库中的最新具体化视图。您可以使用此目标数据库中持续更新的数据,从来源迁移到目标位置的低停机时间数据库迁移,或源云端配置(其中的源和目标)位于不同的托管环境中。
  3. 事件驱动型架构:基于微服务的现代架构依赖于数据中心内数据中心不断更新的事件中心,实现事件驱动。通过持续将事件数据写入 Cloud Storage 等目标,您可以构建基于事件的事件架构,该架构是基于这些目的地的事件数据用量构建的。

集成

问题 回答
Datastream 如何与 Google Cloud 数据服务集成?

Datastream 提供从来源到各种 Google Cloud 服务的 CDC 数据复制服务,可完善和增强 Google Cloud 数据套件。Datastream 可与这些服务无缝集成,构成更大的 Google Cloud 生态系统。

Datastream 与以下数据服务集成:

  • Dataflow:Datastream 通过 Dataflow 模板与 Dataflow 集成。这些模板可从 Cloud Storage 读取数据,并将该数据加载到 BigQuery、Cloud SQL for PostgreSQL 或 Cloud Spanner 中。这些模板的用途是,在目标平台中保留复制的源表的最新具体化视图。模板在 Dataflow 界面中可用,并且专为 Data-stream 生成的文件而设计,以便轻松进行开箱即用的处理。
  • Cloud Data Fusion:Data 数据流通过 Cloud SQL Fusion 的复制功能为 Oracle 连接器提供支持。您可以创建数据数据流在底层运行的复制 Oracle 源,以便轻松构建数据流水线。此流水线包括 Datastream 流入 Cloud Data Fusion 的 Oracle 数据丰富的转换。
  • Cloud Storage:Datastream 通过写入作为更改流的目标位置来与 Cloud Storage 集成。
  • Cloud SQL、Cloud Spanner 和 BigQuery:Datastream 与这些目标数据库集成。通过使用 Dataflow 模板,您可以在数据库中维护最新具体化视图。

预览和正式版

问题 回答
何时推出预览版和正式版的数据流? 目前,Datastream 的预览版本可供使用。GA 版本将在今年晚些时候发布。
Datastream 支持预览哪些来源和目标?
  • 来源:Datastream 支持来自 Oracle 和 MySQL 来源的流式数据,这些数据库包括云托管和自行管理的。如需详细了解来源支持,请参阅行为和限制
  • 目标位置:Datastream 支持写入流式传输到 Cloud Storage 的文件中的数据更改。然后,您可以使用 Dataflow 模板将数据从 Cloud Storage 转移到 BigQuery、Cloud Spanner 和 Cloud SQL for PostgreSQL。
Datastream 支持 Google Analytics(分析)的哪些来源和目标? 数据流支持 Google Analytics(分析)与来源进行相同的源和目标。
Datastream 可以处理加密数据库吗? 可以。
什么是 Datastream 的区域性可用性?

如需查看提供数据流的区域列表,请参阅 IP 允许列表和区域

Google Analytics(分析)可在所有地区使用数据流。

行为和限制

问题 回答
Datastream 支持哪些来源?

对于 MySQL,Datastream 支持 5.6、5.7 和 8.0 版。支持任何与 MySQL 兼容的数据库,包括但不限于:

  • 本地或任意云服务商的自托管数据库
  • Cloud SQL for MySQL
  • AWS RDS MySQL 和 Aurora MySQL
  • MariaDB
  • 阿里巴巴 Cloud PolarDB
  • 适用于 MySQL 的 Percona 服务器

对于 Oracle,Datastream 支持 11g 版本 2、12c 版本 2、18c 和 19c(不支持 SCAN 配置、CDB/PDB 或自治数据库)。支持任何与 Oracle 兼容的数据库,包括但不限于:

  • 本地或任意云服务商的自托管数据库
  • AWS RDS
  • Oracle Cloud
Datastream 如何从来源中提取数据?

对于 MySQL,Datastream 会处理 MySQL 二进制日志以提取更改事件。

对于 Oracle,Datastream 使用 LogMiner 和补充日志记录设置从 Oracle 的重做日志中提取数据。

您能否将源中的日志文件直接复制到 Google Cloud? Datastream 不会复制所有的日志文件,但直接从数据库服务器查询日志文件,并且仅会将指定表中的更改复制到目标位置。
对于 Oracle 来源,Datastream 是否需要 GoldenGate 许可证? 数据流不需要金币许可,因为它使用 Oracle LogMiner 从数据库的重做日志读取数据。
如果旧版不支持 Oracle LogMiner,会出现什么情况? 不再针对 Oracle 20 及更高版本移除 LogMiner 支持,因此,任何该版本上的 Oracle 来源都可以安全地将 LogMiner 安全地用于 Datastream。
Datastream 能够处理的数据有哪些限制?

MySQL 源都有常规限制、MySQL 源的限制和 Oracle 源的限制。

一般限制包括:

  • 吞吐量:约 5 MBPS,行大小上限为 3 MB。
  • 复制期间不支持某些数据定义语言 (DDL) 操作,包括:
    • 从表中间删除列。这可能会导致数据差异,因为值与不正确的列相关联。
    • 更改列的数据类型。这可能会导致数据不一致,因为数据未正确映射到正确的数据流统一类型,而数据可能会损坏。
    • 级联删除将被忽略。
    • 系统会忽略表截断。

MySQL 限制包括:没有主键且大于 100 GB 的表不支持回填。

Oracle 限制包括:

  • 列支持:
    • 某些数据类型不受支持,使用 NULL 值复制。这些数据类型包括抽象数据类型 (ADT)、ANYDATA、集合 (VARRAY)、BLOB/CLOB/LOB/NCLOBLONGUDTUROWIDXMLType
  • 不支持的 Oracle 功能:
    • 外部表
    • 数据库链接 (dblinks)
    • 仅限索引的表 (IOS)
    • 不会复制 Oracle 标签安全 (OLS)。
  • 大小超过 100 GB 的表不支持回填。

数据流生成的每个事件中都包含哪些数据? 每个生成的事件(用于插入、更新和删除)都包括来自源的整行数据,以及每列的数据类型和值。每个事件还包括事件元数据,可用于建立排序并确保数据正好送达一次。
Datastream 保证排序吗? 虽然 Datastream 不保证排序,但它可为每项事件提供额外的元数据。此元数据可用于确保最终的目的地一致性。根据来源、费率和频率变化和其他参数,最终一致性通常可在 1 小时内完成。
Datastream 是否保证正好送达一次? 数据流至少传送一次。您可以使用 Datastream 写入每个事件的其他元数据来消除重复数据。
Datastream 如何表示来自源类型的数据以用于下游处理?

利用数据流,您可以通过在所有来源中归一化数据类型,轻松、轻松地对数据源中的数据进行下游处理。Datastream 采用原始源数据类型(例如 MySQL NUMERIC 类型或 Oracle NUMBER 类型),并将其标准化为数据流统一类型

统一类型表示所有可能的来源类型,无损压缩。而归一化处理可以轻松处理来自不同来源的数据,并以非源代码的方式查询下游数据。

如果下游系统需要了解源数据类型,则可以通过对 Datastream 的架构注册表进行 API 调用来执行此操作。此注册表会存储每个数据源的最新带版本架构。由于源数据库架构发生变化,架构注册表 API 还支持快速下游架构偏移解析。

Datastream 如何处理来源中的架构(架构)? 数据流会持续跟踪对源数据结构的更改。架构存储在 Datastream 的架构注册表中,并且每个事件会在生成时引用架构。这样一来,Datastream 或其他下游进程便可实时跟踪架构更改,并根据这些更改进行调整,确保所有数据都已正确流式插入和加载到目标位置。

安全性和连接

问题 回答
Datastream 是确保敏感数据的安全服务吗? Datastream 支持多个安全的专用连接配置来保护传输从来源到目标的传输中的数据。复制数据后,系统会默认对其进行加密,并利用 Cloud Storage 的安全控制措施。由数据流流式传输的任何数据均会进行静态加密。
哪些连接选项可用于将来源连接到 Datastream?

您可以配置三种连接方法

  • IP 允许列表:此方法允许通过列出来源的数据流区域级 IP 地址来为您提供公共连接。创建流时,Datastream 会在界面中显示这些 IP 地址。
  • 转发 SSH 隧道:此方法允许使用客户配置的 SSH 堡垒主机,从而通过公共网络提供安全连接,除了允许列出区域 IP 地址的信息之外。
  • 通过 VPC 对等互连建立专用连接:使用此方法,通过 Google Cloud 内部网络连接到 Google Cloud 托管的数据库,或通过在数据流的专用网络和组织的 Google 之间建立 VPC 对等互连来利用现有 VPN 或互连 Cloud VPC。
如何限制数据流对敏感数据的处理?

通过数据流,您可以指定要流式传输到来源的哪些特定数据元素(架构、表格和列),以及要从中排除哪些元素。

数据库日志可能包含从数据流定义中排除的元素的数据更改。由于您无法在来源中过滤这些元素,因此数据流将读取但忽略与元素关联的任何数据。

处理数据流文件

问题 回答
如何在 Cloud Storage 中创建文件? Datastream 为每个表创建一个文件夹。在每个文件夹中,每当数据流达到用户定义的大小或时间阈值时,Datastream 都会轮播文件(或创建新文件)。每当检测到架构更改时,Datastream 也会轮替文件。文件名由唯一的架构键(基于架构的哈希)组成,后跟文件中第一个事件的时间戳。出于安全方面的考虑,这些文件名不应被用户理解或理解。
如果 Cloud Storage 中的数据未排序,则如何在将事件加载到目标位置之前对其进行重新排序? 每个事件都包含多个唯一标识 Oracle 重做日志中行的元数据字段。具体而言:
  • rs_id,实际上由三个值组成(例如 0x0073c9.000a4e4c.01d0)。 rs_id 唯一标识重做日志中的记录。
  • ssn,在重做日志中的记录过长时使用。因此,Oracle LogMiner 将记录拆分为多行。
要对事件进行排序,您需要按 rs_id 的每个部分进行排序,然后按 ssn 排序。
如果针对同一时间戳创建了多个文件,那么按特定顺序处理这些文件? 由于无法保证文件间的排序,因此确定文件处理顺序的最佳方法是从特定时间戳中获取所有文件中的所有事件,然后使用上述方法应用排序。
如何处理主要的密钥更新?活动前后是否有信息? row_id 元数据字段唯一标识正在更改的行。为确保数据完整性,请基于 row_id 字段关联的值来合并数据,而不要使用主键。

监控数据流

问题 回答
如何知道所有历史数据何时复制到目标 Cloud Storage 存储分区? 数据流在日志文件中提供有关其当前状态的信息。系统会创建一个日志条目,以指示表完成回填后。

价格

问题 回答
Datastream 如何定价?

数据流根据从来源流式传输到目标位置的数据量 (GB) 定价。

如需详细了解 Datastream 的价格信息,请参阅 Pricing(价格)。

如何计算数据的大小? 帐单是根据从来源流式传输到目标位置的原始(未压缩)数据大小计算的。数据流仅根据流式传输到流的数据收费。
如果您将 Datastream 与 Dataflow 或 Cloud Data Fusion 搭配使用,需要付费才能使用? 每项服务的价格均为单独付费。

其他信息

问题 回答
如果我在使用数据流时还有其他问题或疑虑,该怎么办? 如果您在使用 Datastream 时遇到问题,Google 的支持团队可以为您提供支持。此外,问题排查指南会解决您在使用 Datastream 时可能会遇到的常见问题。