常见问题解答

概览

在本页中,您可以找到有关使用 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 可以在单个数据流中处理最多 10,000 个表。没有技术原因将数据库拆分为多个数据流。需要考虑为不同的逻辑流使用不同的数据流,但每个数据流都会增加源数据库的负载。对于 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 不需要锁定表。

每个来源的限制页面指定数据流最多可以包含 10,000 个表。这是否意味着 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 连接管理器。您还可以使用 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_dblog)的 SELECT 权限
  • 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 将更新/插入和删除事件流式传输到 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. 分析:通过直接将数据复制到 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 与 BigQuery、Dataflow 或 Cloud Data Fusion 搭配使用,则需要为什么付费? 每项服务均单独定价和计费。

更多信息

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