常见问题解答

概览

在本页面中,您可以找到有关使用 Datastream 的常见问题解答 (FAQ)。此常见问题解答与以下内容相关联:

  • 关于 Datastream 和变更数据捕获 (CDC) 的常见问题
  • 常规源代码行为和限制
  • MySQL 源行为和限制
  • Oracle 来源行为和限制
  • PostgreSQL 源行为和限制(包括 AlloyDB for PostgreSQL)
  • SQL Server 源行为和限制
  • BigQuery 目标位置行为
  • Cloud Storage 目标位置行为
  • 使用 DataStream 的常见用例
  • Datastream 如何与 Google Cloud 数据服务集成
  • 安全性和连接性
  • 监控 Datastream
  • 价格
  • 有关 DataStream 的其他信息

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

问题 答案
什么是 Datastream?

Datastream 是一种易于使用的无服务器变更数据捕获 (CDC) 和复制服务。借助 Datastream,您可以将 AlloyDB for PostgreSQL、PostgreSQL、MySQL、SQL Server 和 Oracle 等关系型数据库源中的数据无缝复制到 BigQuery 中。Datastream 可提供现代企业所需的规模、速度、安全性和简便性。借助无服务器自动扩缩架构,Datastream 可让您轻松设置 ELT(提取、加载和转换)流水线,以实现低延迟数据复制,从而实现近乎实时的数据分析。

Datastream 还能够在异构数据库和应用之间可靠且延迟极低地同步数据流。该服务为您简化与 Dataflow 模板的集成,将数据库复制到 Cloud SQL 或 Spanner 以进行数据库同步,或直接利用 Cloud Storage 中的事件流来实现事件驱动型架构。此外,Datastream 与 Cloud Data Fusion 相集成,可帮助客户构建数据流水线并转换为 BigQuery。

Datastream 通过哪些方法流式传输数据? Datastream 通过以下两种方法之一将数据从来源流式传输到目标位置:
  • CDC:从来源实时捕获持续更改。
  • 回填:提供表中存在的数据的历史快照。
什么是 CDC?

CDC 是一种数据集成方法,可让您使用更少的系统资源更快地集成和分析数据。该方法通常读取来源为其自身内部事务完整性而保留的更改日志,从数据源仅拉取最新更改(更新、插入或删除)。

CDC 是一种高效的机制,可在将新数据加载到运营数据存储区和数据仓库时,限制对来源的影响。它通过实现增量加载或近乎实时地将数据更改流式传输到数据目的地,消除了批量加载更新和不便的批处理窗口的需要。

CDC 可用于从实时访问数据变化(如分析、跨地理位置分布式系统同步数据以及事件驱动型架构)中发掘价值的许多使用场景。

回填是什么?

除了持续更改之外,Datastream 还使用回填从来源拉取所有现有数据,然后将数据流式传输到目标位置。因此,系统将使用来自来源的所有历史数据“回填”目标位置。回填有两种类型:

  • 增量:表的默认回填类型。在增量回填期间,Datastream 会分批从一系列行中提取数据,并分批将数据流式传输到目标批次。
  • 完全转储:在完全转储回填期间,Datastream 会立即拉取所有数据,并将其流式传输到目标位置。
执行回填时,您需要考虑任何限制吗?

如需了解回填限制,请参阅相应来源类型的“已知限制”页面:

CDC 和回填操作的推荐顺序是什么? 在大多数情况下,您无需特别考虑这点。在数据流中启用回填后,Datastream 会同时执行回填和 CDC。在某些极端情况下,例如当复制无法使用 Datastream 回填的非常大的表时,您可能需要先将数据加载到 BigQuery 中,然后再启动流。
我可以监控 CDC 和回填操作的状态吗?

您可以监控每个对象的回填状态:

  1. 在 Google Cloud 控制台中,前往数据流页面。
  2. 点击要监控的数据流。
  3. 点击对象标签页。

CDC 状态实际上就是数据流状态。如果 CDC 操作失败,则整个流都会失败。

Cloud Monitoring 中提供了其他对象级指标。如需了解详情,请参阅 Cloud Monitoring 文档

变更数据流与复制是什么?

变更数据流是 Datastream 出于下游使用而向目的地发出的一系列事件。将变更数据流写入 Cloud Storage 的结果是一组文件,其中包含特定表中一段时间内的变更日志事件。这些事件表示对该表的插入、更新和删除操作。对于事件驱动型架构等使用场景,这些事件可以由 Dataflow 等服务在 Cloud Storage 下游使用和处理。

Datastream 上下文中的复制是指目标中源表的最新 1:1 表示形式。例如,在 Oracle 中某个表,其更改会被连续复制到 BigQuery 表中,其中 BigQuery 表会使用从 Oracle 表流式传输的更改来保持最新状态。复制功能通过使用每个更改事件并使用它来更新目标位置,从而利用变更数据流。Datastream 支持直接复制到 BigQuery 中,并通过与 Dataflow 集成来支持 Cloud SQL 和 Spanner 等其他目标位置,方法是利用从 Cloud Storage 拉取变更数据流事件的模板并相应地更新目标表。

Datastream 是否需要在来源上安装代理? 您不必在来源上安装代理。Datastream 使用现有接口(例如 Oracle LogMiner)从源中获取数据。
单个数据流中可以包含多少个表? Datastream 可以在单个数据流中处理多达 1 万个表。没有技术原因需要将数据库拆分为多个数据流。可能需要考虑一些业务注意事项,才能针对不同的逻辑流使用不同的流,但每个流都会增加源数据库的负载。对于 CDC,这种负载可以忽略不计,但对于回填来说可能很大。
Datastream 的使用对生产数据库的性能影响如何?

在将新数据加载到目标数据存储区和数据仓库时,CDC 是一种高效的机制,用于限制对来源的影响。CDC 还通过增量加载或近乎实时的数据流向目标,消除了批量加载更新和不便的批处理窗口的需要。

此外,Datastream 通过限制同时进行的回填任务的数量,并让您能够决定要回填哪些对象以及何时回填这些对象,来最大限度地降低初始回填的影响。

您能否将日志文件从来源复制到 Google Cloud? 不能。Datastream 直接查询数据库服务器上的日志,只有指定表的变更才会写入目标位置。
Datastream 能否转移历史数据? 符合。默认情况下,Datastream 会并行 CDC 流,从您指定的来源数据库表中获取所有历史数据。Datastream 可让您灵活地从来源中的部分或所有数据库表获取历史数据。此外,在配置数据流时,您可以选择停用历史回填。
Datastream 能否保证正好一次传送? 不可以。DataStream 至少传送一次。Datastream 写入每个事件的其他元数据可用于移除重复数据。
Datastream 是否可以处理加密的数据库? 可以。
DataStream 是否可以从数据源流式传输特定表和列? 符合。借助 Datastream,您可以指定包含和排除表和架构的列表,以便仅将所需的数据从来源流式传输到目标位置。对于包含的表,您可以排除表的特定列,从而进一步微调要流式传输到目标位置中的数据。但是,无法复制具体化视图。
如何将数据流移至其他项目或区域?
  1. 在新区域或项目中,使用与现有数据流相同的配置创建数据流,但不要选中回填历史数据复选框。
  2. 启动创建的数据流
  3. 在您创建的数据流处于 RUNNING 状态后,暂停现有数据流
  4. (可选)选中回填历史数据复选框,以修改新的数据流。未来添加到数据流中的表中现有数据将从来源流式传输到目的位置。
Datastream 如何处理数据库日志文件中未提交的事务? 当数据库日志文件包含未提交的事务时,如果回滚了任何事务,则数据库会在日志文件中将其反映为“反向”数据操纵语言 (DML) 操作。例如,回滚 INSERT 操作具有相应的 DELETE 操作。Datastream 从日志文件中读取这些操作。
Datastream 的区域可用性如何?

如需查看可使用 Datastream 的区域列表,请参阅 IP 许可名单和区域

常规源代码行为和限制

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

Datastream 支持从 Oracle、MySQL、PostgreSQL、AlloyDB for PostgreSQL 和 SQL Server 来源流式传输数据,包括云托管和自行管理。如需了解特定于来源的版本,请参阅以下页面:

Datastream 是否可以处理加密的数据库? 可以。
Datastream 如何从来源中提取数据?

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

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

对于 PostgreSQL 和 AlloyDB for PostgreSQL,Datastream 依赖于 PostgreSQL 的逻辑解码功能。逻辑解码会显示提交到数据库的所有更改,并允许使用和处理这些更改。

对于 SQL Server,Datastream 使用事务日志来跟踪数据操纵语言 (DML) 更改。

您能否将日志文件直接从来源复制到 Google Cloud? Datastream 不会复制整个日志文件,而是直接从数据库服务器查询日志文件,只会将指定表中的变更复制到目标位置。
Datastream 可以处理的数据有哪些限制?

对于特定的数据库源,存在一般限制。

一般限制包括:

  • 吞吐量:约为 5 MBPS,Cloud Storage 目标位置的行数上限为 30 MB,BigQuery 行大小上限为 20 MB。
  • 某些数据定义语言 (DDL) 操作在复制期间不受支持,包括:
    • 从表中间删除列。这可能会导致数据差异,因为值与错误的列关联。
    • 更改列的数据类型。这可能会导致数据差异,因为数据未正确映射到正确的 Datastream 统一类型,并且数据可能会损坏。
    • 级联删除会被忽略。
    • 表截断会被忽略。

如需了解特定来源的限制,请参阅以下页面:

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

在向无架构目的地(如 Cloud Storage)写入数据时,Datastream 会将所有来源的数据类型标准化,从而简化跨来源数据的下游处理。Datastream 接受原始源数据类型(例如 MySQL 或 PostgreSQL NUMERIC 类型或 Oracle NUMBER 类型),并将其标准化为 Datastream 统一类型

统一类型表示所有可能的来源类型的无损超集,标准化意味着不同来源的数据可以轻松地处理,并以与来源无关的方式在下游进行查询。

Datastream 如何处理来源中的结构(架构)更改? Datastream 会定期从来源提取架构。架构存储在 Datastream 的内部架构注册表中,每个事件在生成时都会引用架构。这样一来,Datastream 就可以跟踪架构更改并根据这些更改进行调整,从而确保所有数据都正确流式传输并加载到目标位置。但在两次架构提取之间,系统可能不会检测到某些架构更改,这可能会导致数据差异。
我删除(删除)了源数据库中的一个列,但该列仍显示在目标数据库中。为什么? Datastream 不会删除目标位置中的列。您必须手动删除列。这种行为是有意为之,因为在某些情况下,您可能希望将已删除的列保留在目标位置。例如,Datastream 会将源数据中列的重命名视为删除列,然后再添加另一列。在这种情况下,您不希望丢失目标位置中的原始列。
由于验证失败,直播未能启动,但我认为这其中有误,或者我也想尝试运行直播。如何通过此验证? 您可以使用 API 启动数据流,只需添加 force=true 标志并跳过验证检查即可。请注意,跳过验证并不能保证数据流可以运行,并且如果数据库缺少必要的配置或权限,则可能仍会失败。
我可以重启失败的直播吗?

您可以通过解决 Datastream 报告的错误来修复状态为 Failed 的数据流。如需了解详情,请参阅排查视频流问题

您还可以恢复状态为 Failed permanently 的数据流。如需了解详情,请参阅恢复视频流

Datastream 会锁定数据库表吗?

不需要。Datastream 不需要锁定这些表。

每个来源的限制页面规定,数据流最多可包含 1 万个表。这是否意味着 Datastream 无法同时对超过 1 万个表并行运行 CDC 操作? 不会。这里提到的限制针对的是每个直播。您可以拥有多个数据流,它们的表总数超过 10,000 个。

MySQL 源行为和限制

问题 答案
Datastream 如何从 MySQL 获取数据? Datastream 使用 MySQL 的二进制日志从 MySQL 中提取变更事件
Datastream 是否支持 Cloud SQL for MySQL 读取副本实例?

是的,Datastream 支持 5.7 和 8.0 版 Cloud SQL for MySQL 的读取副本实例。

您可以针对这些实例启用二进制日志记录功能。为此,请执行以下 gcloud 命令:

gcloud sql instances patch INSTANCE_NAME -- enable-bin-log

如需了解详情,请参阅读取副本的二进制日志记录功能

Datastream 要从源 MySQL 数据库复制数据,至少需要具备哪些权限?

您必须向 Datastream 用户授予以下权限,才能从 MySQL 数据库复制数据:

  • SELECT
  • REPLICATION SLAVE
  • REPLICATION CLIENT
Datastream 是否支持二进制日志压缩?

不可以,Datastream 不支持使用二进制日志事务压缩功能来压缩事务事件。停用二进制日志事务压缩,以便在 Datastream 中使用 MySQL 的变更数据捕获功能。

您的组织不允许向其所有表和数据库授予 SELECT 权限。您是否仍然可以使用 Datastream?

您可以向要复制的特定表或数据库中的整个架构授予 SELECT 权限。为此,请运行以下命令之一:

GRANT SELECT ON DATABASE_NAME.TABLE_NAME TO USER_NAME@'%';
GRANT SELECT ON DATABASE_NAME.* TO USER_NAME@'%';

请替换以下内容:

  • DATABASE_NAME:您的 MySQL 数据库的名称。
  • TABLE_NAME:您要向其授予 SELECT 权限的表的名称。
  • USER_NAME:您要向其授予 SELECT 权限的用户的名称。

如果您想将权限限制为特定主机名,请将 % 字符替换为特定 IP 地址或地址范围。

Oracle 来源行为和限制

问题 答案
Datastream 如何从 Oracle 获取数据? Datastream 使用 Oracle LogMiner 从 Oracle 的重做日志中提取数据。
Datastream 是否需要 Oracle 的 GoldenGate 许可? 不需要。Datastream 不需要 GoldenGate 许可,因为它使用 Oracle LogMiner 从数据库的重做日志中读取数据。
如果 Oracle LogMiner 不再受支持,会发生什么情况? 所有已正式发布的 Oracle 版本仍然支持 Oracle LogMiner,并且 Datastream 将在以后的所有版本中继续支持 LogMiner。Oracle 已不再支持 LogMiner CONTINUOUS_MINE 选项,但 Datastream 不使用此选项,因此此弃用对 Datastream 没有影响。
Datastream 是否支持对来自 Oracle 数据库的传输中的数据进行加密?

Datastream 支持基于 Oracle 网络服务对传输中的数据加密。Datastream 以 REQUESTED 模式运行。

Datastream 是否支持安全套接字层 (SSL) 和传输层安全协议 (TLS) 加密?

是,Datastream 支持使用 TCPS 协议建立与 Oracle 来源的 SSL/TLS 加密连接。

Datastream 是否支持 Oracle 多租户架构,尤其是容器数据库 (CDB) 和可插入数据库 (PDB)? 可以,Datastream 支持 Oracle 多租户架构 (CDB/PDB),但您只能在流中复制单个可插入数据库。
您的组织不允许授予 GRANT SELECT ANY TABLE 权限。您是否仍然可以使用 Datastream?

如果您无法授予 GRANT SELECT ANY TABLE 权限,则可以向以下表列表授予 SELECT 权限:

  • ALL_COL_COMMENTS
  • ALL_CONS_COLUMNS
  • ALL_CONSTRAINTS
  • ALL_DB_LINKS
  • ALL_EXTERNAL_TABLES
  • ALL_IND_COLUMNS
  • ALL_INDEXES
  • ALL_LOG_GROUPS
  • ALL_MVIEWS
  • ALL_OBJECTS
  • ALL_PART_TABLES
  • ALL_SEQUENCES
  • ALL_SOURCE
  • ALL_SYNONYMS
  • ALL_TAB_COLS
  • ALL_TAB_COLUMNS
  • ALL_TAB_COMMENTS
  • ALL_TABLES
  • ALL_TRIGGERS
  • ALL_TRIGGER_COLS
  • ALL_TYPES
  • ALL_USERS
  • ALL_VIEWS
  • DATABASE_PROPERTIES
  • DBA_ROLE_PRIVS
  • DUAL
  • PRODUCT_COMPONENT_VERSION
  • ROLE_SYS_PRIVS
  • USER_ROLE_PRIVS
  • USER_TAB_PRIVS

如需使用 Datastream 流式传输更改,您还需要拥有对数据流中包含的所有表的读取权限。

若要启动数据流,请使用 API 绕过验证。如需了解详情,请参阅启动数据流

Datastream 是否支持从 Oracle 只读副本实例进行复制? Datastream 支持从 Oracle 只读副本实例进行复制,前提是该实例根据配置指南进行配置。
Datastream 是否支持 Oracle SCAN RAC 数据库? 是的,可以。但是,您无法使用 Datastream 在 Oracle 真实应用集群 (RAC) 环境中通过单客户端访问名称 (SCAN) 功能与数据库建立直接连接。要克服此限制,请直接连接到其中一个节点,或使用 Oracle Connection Manager。您还可以使用 HAProxy 等反向代理解决方案创建专用连接配置。

PostgreSQL 源行为和限制

问题 回答
Datastream 如何从 PostgreSQL 中获取数据? Datastream 使用 PostgreSQL 的逻辑解码功能从 PostgreSQL 中提取更改事件
Datastream 是否支持从 AlloyDB for PostgreSQL 或 AlloyDB Omni 源进行复制? 符合。Datastream 支持这两种来源。如需了解如何配置 AlloyDB for PostgreSQL 源数据库,请参阅配置 AlloyDB for PostgreSQL 数据库。如需了解如何配置 AlloyDB Omni 源数据库,请参阅配置自行管理的 PostgreSQL 数据库
Datastream 是否支持从 PostgreSQL 读取副本实例进行复制? 只读副本实例无法充当逻辑复制的发布者,因为 PostgreSQL 不支持读取副本中的逻辑解码。
Datastream 是否支持行级安全性 (RLS) Datastream 不支持复制已启用 RLS 的表。不过,您可以使用 BYPASSRLS 子句绕过此限制:
ALTER USER USER_NAME BYPASSRLS;

USER_NAME 替换为 Datastream 用于连接到数据库的用户的名称,以及您要为哪些用户绕过 RLS 政策。

从 PostgreSQL 来源进行复制时,Datastream 是否支持并发 CDC 操作? 不能。PostgreSQL 复制依赖于复制槽的概念,复制槽不支持并发连接。一次只能从复制槽中读取一个 CDC 任务。例如,如果您从源数据库中删除大量记录,则复制槽可能会因删除事件而过载。系统会延迟对来源所做的任何后续更改,直到复制槽队列中已有的删除事件处理完毕。
Datastream 是否支持安全套接字层 (SSL) 和传输层安全协议 (TLS) 加密?

Datastream 支持不需要客户端证书的 SSL/TLS 加密连接。

SQL Server 源行为和限制

问题 回答
Datastream 支持哪些 SQL Server 版本? Datastream 支持支持变更数据捕获的 SQL Server 数据库版本。如需查看支持的 SQL Server 版本和版本的完整列表,请参阅版本
对于 SQL Server 源,Datastream CDC 复制的工作原理是什么? Datastream 数据注入过程使用事务日志,而不是基于 Microsoft CDC 的表。此方法可减少数据库的负载,同时保持快速数据检索。
Datastream 要从源 SQL Server 数据库复制数据,至少需要具备哪些权限?

您必须向 Datastream 用户授予以下角色和权限,才能从 MySQL 数据库中复制数据:

  • 针对数据库、sys.fn_dblogsys.fn_dump_dblogSELECT 权限
  • VIEW DATABASE STATE
  • VIEW SERVER STATE
  • 该用户必须是 db_owner 固定数据库角色的成员。如需了解如何向角色添加用户,请参阅 SQL Server 源数据库类型的配置页面。
在配置 SQL Server 源时,为什么您需要进行配置(例如更改轮询间隔和设置截断保护措施)? 从 SQL Server 来源复制数据时,Datastream 会使用事务日志来跟踪 DML 更改。如果日志在 Datastream 读取之前被截断,则会发生数据丢失。更改轮询间隔并设置截断保护是一项可选操作,但它会提供一层额外的保护,可确保 Datastream 即使在发生停机或连接问题的情况下也可以读取数据。如需了解详情,请参阅配置 SQL Server 源数据库

BigQuery 目标位置行为

问题 回答
Datastream 和 BigQuery 如何协同工作以从源数据库复制更改? Datastream 会持续从源数据库中读取变更数据流,并使用 Storage Write API 将 upsert 和 delete 事件流式传输到 BigQuery 目标表。然后,BigQuery 会根据表过时配置将更改应用于表。
在 BigQuery 中如何应用 UPDATEDELETE 操作? 当 Datastream 在 BigQuery 中创建表时,会根据源数据库中定义的主键在表上设置主键。BigQuery 会处理事件,并根据表的主键将更改应用于底层 BigQuery 表。
Datastream 和 BigQuery 如何处理没有主键的表? 如果源表没有主键,则这些表只会被视为附加操作,并且给定行的每个事件在 BigQuery 中都会显示为单独的行。
Datastream 和 BigQuery 如何处理事件排序? BigQuery 使用事件元数据和内部更改序列号 (CSN) 将事件按正确的顺序应用于表。如需详细了解事件元数据,请参阅事件和数据流
与 Datastream 配合使用时如何计算 BigQuery 费用? BigQuery 费用与 Datastream 分开计算和计费。如需了解如何控制 BigQuery 费用,请参阅 BigQuery CDC 价格
在将数据流式传输到 BigQuery 时,Datastream 支持的最大行大小是多少? Datastream 支持的最大行大小为 20 MB。
将数据流式插入 BigQuery 时,表会带有 _ 前缀。您能否更改此行为,让 BigQuery 中的表遵循与源数据库中的相同结构? 为 BigQuery 目标位置配置数据集时,您需要为每个架构创建一个数据集,或为所有架构创建一个数据集。为每个架构创建数据集时,源架构中的每个架构都会映射到 BigQuery 中的数据集,并且源架构中的所有表都会映射到数据集中的表。选择“适用于所有架构的单个数据集”选项时,按照 BigQuery 中的表命名惯例,表名称的前缀为 _
CDC 能否捕获源架构更改,例如在源中插入或删除列时?此类更改是否会自动反映在目标 BigQuery 数据集的已填充表中? Datastream 会自动检测新列,并将这些列添加到新行的目标架构中,但不会将已复制到目标中的列添加到目标架构中。Datastream 会忽略已删除的列,并在目标位置使用 NULL 值填充这些列。然后,您可以在 BigQuery 中手动删除这些列。

Cloud Storage 目标位置行为

问题 答案
如何在 Cloud Storage 中创建文件? Datastream 会为每个表创建一个文件夹。在每个文件夹中,Datastream 会在达到用户定义的大小或时间阈值时轮替文件(或创建新文件)。每当检测到架构更改时,Datastream 也会轮替文件。文件名将由一个唯一的架构键(基于架构的哈希值)和文件中第一个事件的时间戳组成。出于安全考虑,这些文件名不应被人们阅读或理解。
如果 Cloud Storage 中的数据未排序,那么事件在加载到目标位置之前如何重新排序?

每个事件都包含多个元数据字段,这些字段用于唯一标识日志文件中的行,并允许您对事件进行排序。这些字段包括:

对于 Oracle 来源:

  • rs_id(记录集 ID),它实际上由三个值(例如 0x0073c9.000a4e4c.01d0)组成。rs_id 唯一标识重做日志中的记录。
  • ssn(SQL 序列号):重做日志中的记录过长时使用。因此,Oracle LogMiner 会将记录拆分为多行。

对于 MySQL 来源:

  • log_file:Datastream 可从中拉取 CDC 复制中的事件。
  • log_position,用于标识 MySQL 二进制日志中记录的偏移量。

对于 PostgreSQL 来源:

  • source_timestamp:源中记录发生更改时的时间戳。如果您要排序的事件的 source_timestamp 值相同,请比较 lsn 值。
  • lsn(日志序列号),用于标识 WAL 日志文件中记录的偏移量。

如需详细了解元数据字段,请参阅特定于来源的元数据

如果为同一时间戳创建多个文件,应该按什么顺序处理它们? 由于无法保证文件内和文件之间的排序,因此要确定处理来源文件的顺序,最好的方法是获取特定时间戳的所有文件中的所有事件,然后使用本部分前面提到的方法应用排序。
如何处理主键更新?事件中有之前之后信息吗? 当行的主键发生更改时,Datastream 会针对更改生成两个事件:UPDATE-DELETEUPDATE-INSERTUPDATE-DELETE 事件表示更新前的数据,UPDATE-INSERT 事件表示更新后的数据。如需详细了解来源专用元数据,请参阅事件和数据流
在将数据流式传输到 Cloud Storage 时,Datastream 支持的最大行大小是多少? Datastream 支持的最大行大小为 30 MB。

使用场景

问题 答案
使用 DataStream 的常见使用场景有哪些?

Datastream 是 CDC 和复制服务,这意味着它适用于各种使用场景,这些使用场景可以受益于对持续流式传输变更数据的访问。Datastream 的最常见用例包括:

  1. Google Analytics(分析):通过直接将数据复制到 BigQuery,客户可以访问 BigQuery 中的最新运营数据。客户可以使用 BigQuery 中这些持续更新的数据,基于其数据构建最新的信息中心。例如,这可用于监控系统以及获得有关其业务状态的最新数据洞见。
  2. 数据库复制和同步场景:通过将 Datastream 与 Dataflow 模板集成(以便将数据加载到 Cloud SQL 或 Spanner 中),您可以获取这些数据库中源数据的最新复制。您可以将目标数据库中持续更新的数据用于进行从数据源到目标位置进行低停机时间数据库迁移,或用于混合云配置,其中数据源和目标位置位于不同的托管环境中。
  3. 事件驱动型架构:基于微服务的现代架构依赖于中央数据中心,这些中心利用来自整个组织的事件不断更新,从而实现事件驱动型。通过持续将事件数据写入 BigQuery 和 Cloud Storage 等目标位置,您可以基于这些目标位置的事件数据使用情况,构建事件驱动型架构。

集成

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

Datastream 通过提供从来源到各种 Google Cloud 服务的 CDC 数据复制,补充和增强 Google Cloud 数据套件。Datastream 通过与这些服务无缝集成,可以融入更大的 Google Cloud 生态系统中。

Datastream 与以下数据服务集成:

  • BigQuery:Datastream 使用 BigQuery Write API 直接与 BigQuery 集成。Datastream 将更改事件直接写入 BigQuery 数据集,其中更改将与现有数据持续合并 (UPSERT)。
  • Dataflow:Datastream 使用 Dataflow 模板与 Dataflow 集成。这些模板会从 Cloud Storage 中读取数据,并将该数据加载到 BigQuery、Cloud SQL for PostgreSQL 或 Spanner 中。这些模板的用途是确保目标位置中复制的源表保持最新。这些模板可在 Dataflow 界面中使用,专为 Datastream 生成的文件而构建,无需开箱即用。
  • Cloud Data Fusion:Datastream 通过 Cloud Data Fusion 的复制功能为 Oracle 连接器提供支持,从而与 Cloud Data Fusion 集成。您可以创建 Oracle 复制源,由 DataStream 在后台以透明的方式“提供支持”,从而轻松构建数据流水线。此流水线包括丰富的转换,可用于 Datastream 流式传输到 Cloud Data Fusion 的 Oracle 数据。
  • Cloud Storage:Datastream 通过将 Cloud Storage 作为变更流式传输目标位置在其中写入数据,从而与 Cloud Storage 集成。
  • Cloud SQL 和 Spanner:通过使用 Datastream 和 Dataflow 模板,您可以维护数据库中复制的表保持最新状态。
Dataflow 中的 Datastream-to-BigQuery 模板对数据操纵语言 (DML) 操作的数量是否有限制? 不会。该模板使用流式插入 API 将数据加载到 BigQuery 中。因此,DML 操作的数量没有限制。但需遵守一些配额限制

安全性和连接性

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

您可以配置以下三种类型的连接方法

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

借助 Datastream,您可以指定要流式传输到目标位置的来源的哪些特定数据元素(架构、表和列),以及要从流式传输中排除的元素。

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

Datastream 如何确保数据库凭据的安全? 所有用户元数据(包括用于访问数据源的用户名和密码)在传输过程中和静态时都会加密,且 Google 会将其存储在专有的存储系统中。系统会跟踪和审核对此元数据的访问。
为什么创建专用连接配置页面指出您必须向 Datastream 服务帐号授予 roles/compute.networkAdmin 角色,才能在共享 VPC 中创建专用连接配置? 只有创建 VPC 对等互连时才需要 networkAdmin 角色。建立对等互连后,您不再需要该角色。如果您的组织不允许向 Datastream 服务帐号授予 networkAdmin 角色,请创建具有以下特定权限的自定义角色:

动态选择 IP 范围

  • compute.routes.get
  • compute.routes.list
  • compute.subnetworks.get
  • compute.subnetworks.list

创建对等互连网络

  • compute.globalOperations.get
  • compute.networks.addPeering
  • compute.networks.removePeering
  • compute.networks.get

预留 IP 地址

  • compute.globalAddresses.get
  • compute.globalAddresses.create
  • compute.globalAddresses.createInternal
  • compute.globalAddresses.delete
  • compute.globalAddresses.deleteInternal
  • compute.networks.use
  • compute.networks.listPeeringRoutes
我可以使用 Private Service Connect 创建专用连接配置吗? 不可以,Datastream 不支持 Private Service Connect。

监控 Datastream

问题 回答
我如何知道所有历史数据已复制到目标位置? Datastream 提供日志文件中关于其当前状态的信息。系统会创建一个日志条目,用于指示表完成回填的时间。
延迟时间偶尔会增加,然后随着时间的推移而逐渐减少。这是正常现象吗? 当来源生成的事件吞吐量增加时,Datastream 会自动纵向扩容。不过,为了保护源数据库和 Datastream,Datastream 随时可打开的并发连接和进程的数量是有限制的。当事件吞吐量显著增加时,延迟时间会暂时激增;随着事件积压的处理,延迟时间预计会逐渐减少。

价格

问题 答案
Datastream 的价格如何?

Datastream 的价格基于从来源处理到目标的数据量 (GB)。

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

如何计算数据的大小? 费用是根据 Datastream 处理的数据大小计算的。Datastream 仅对流式传输到目标位置的数据收费。
如果您将 Datastream 与 BigQuery、Dataflow 或 Cloud Data Fusion 搭配使用,则需要支付什么费用? 每项服务均单独定价和计费。

更多信息

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