来源 MySQL 数据库

本部分包含有关以下内容的信息:

  • Datastream 如何处理从来源 MySQL 数据库中拉取的数据的行为
  • Datastream 支持的 MySQL 数据库版本
  • 将 MySQL 数据库用作来源的已知限制
  • 如何设置来源 MySQL 数据库以便将数据从该数据库流式传输到目标位置的概述

行为

本部分介绍了使用 Datastream 复制数据时 MySQL 源的行为。从 MySQL 数据库注入数据时,您可以使用基于二进制日志的复制或基于全局事务标识符 (GTID) 的复制(预览版)。您可以在创建数据流时选择 CDC 方法。

基于二进制日志的复制

Datastream 可以使用二进制日志文件记录 MySQL 数据库中的数据更改。然后,这些日志文件中包含的信息会复制到目标位置,以重现对源代码所做的更改。

Datastream 中基于二进制日志的复制的主要特性如下:

  • 可以选择给定 MySQL 来源中的所有数据库或特定数据库,以及数据库或特定表中的所有表。
  • 复制所有历史数据。
  • 复制所有数据操纵语言 (DML) 变更,例如从指定数据库和表插入、更新和删除。
  • 仅复制已提交的更改。

基于全局事务标识符 (GTID) 的复制

Datastream 还支持基于全局标识符 (GTID) 的复制。

全局事务标识符 (GTID) 是创建并与在 MySQL 源上提交的每项事务关联的唯一标识符。此标识符不仅对其来源而言是唯一的,对于给定复制拓扑中的所有服务器而言也是唯一的,这与基于二进制日志的复制不同,在基于二进制日志的复制中,数据库集群中的每个节点都维护自己的 binlog 文件,并使用自己的编号。如果发生故障或计划停机,维护单独的二进制日志文件和编号可能会成为一个问题,因为二进制日志连续性会中断,基于二进制日志的复制会失败。

基于 GTID 的复制支持故障切换、自托管式数据库集群,并且无论数据库集群发生什么变化,都能继续正常运行。

Datastream 中基于 GTID 的复制的主要特性如下:

  • 可以选择给定 MySQL 来源中的所有数据库或特定数据库,以及数据库或特定表中的所有表。
  • 复制所有历史数据。
  • 复制所有数据操纵语言 (DML) 变更,例如从指定数据库和表插入、更新和删除。
  • 仅复制已提交的更改。
  • 无缝支持故障转移。

版本

Datastream 支持以下版本的 MySQL 数据库:

  • MySQL 5.6
  • MySQL 5.7
  • MySQL 8.0
  • MySQL 8.4(仅支持基于 GTID 的复制)

Datastream 支持以下类型的 MySQL 数据库:

已知限制

将 MySQL 数据库用作来源的已知限制包括:

  • 数据流限 10,000 个表。
  • 主键定义为 INVISIBLE 的表无法回填。
  • 超过 5 亿行的表无法回填,除非满足以下条件:
    1. 表具有唯一的索引。
    2. 索引中的所有列均不可为 null。
    3. 索引不是降序
    4. 流中包含索引的所有列。
  • Datastream 在处理事件时定期从来源提取最新的架构。如果架构发生更改,Datastream 会检测架构更改并触发架构提取。不过,在架构提取之间,某些事件可能会被错误处理或丢弃,从而导致数据差异。
  • 并非所有对源架构的更改都可以自动检测到,在这种情况下可能会发生数据损坏。以下架构更改可能会导致数据损坏或无法处理下游事件:
    • 删除列
    • 在表中间添加列
    • 更改列的数据类型
    • 对列重新排序
    • 删除表(如果同一表被重新创建并添加了新的数据,则与此相关)
    • 截断表
  • Datastream 不支持复制视图。
  • Datastream 不支持空间数据类型的列。这些列中的值将替换为 NULL 值。
  • Datastream 不支持数据类型为 DATETIMEDATETIMESTAMP 的列中的零值 (0000-00-00 00:00:00)。零值将替换为 NULL 值。
  • Datastream 不支持复制 JSON 列中包含以下值的行:DECIMALNEWDECIMALTIMETIME2DATETIMEDATETIME2DATETIMESTAMPTIMESTAMP2。系统会舍弃包含此类值的事件。
  • Datastream 不支持二进制日志事务压缩
  • Datastream 不支持源 MySQL 连接配置文件中的 SSL 证书链。仅支持单个 x509 PEM 编码证书。
  • Datastream 不支持级联删除。此类事件不会写入二进制日志,因此不会传播到目的地。
  • 使用基于二进制日志的复制时,Datastream 不支持向副本进行故障转移。因此,我们不建议您使用 Datastream 从 Cloud SQL for MySQL 企业 Plus 版源进行复制。Cloud SQL 企业 Plus 版实例采用近乎零停机时间的维护,并会在维护期间故障转移到副本。这会破坏 binlog 的连续性,导致受影响的数据流永久失败。

基于 GTID 的复制的其他限制

  • 使用基于 GTID 的复制时,不支持流恢复。
  • 不支持使用 CREATE TABLE ... SELECT 语句从其他表创建表。
  • 如需了解适用于基于 GTID 的复制的 MySQL 限制,请参阅 MySQL 文档

后续步骤