本部分包含有关以下内容的信息:
- Datastream 如何处理从来源 MySQL 数据库中拉取的数据的行为
- Datastream 支持的 MySQL 数据库版本
- 将 MySQL 数据库用作来源的已知限制
- 如何设置来源 MySQL 数据库以便将数据从该数据库流式传输到目标位置的概述
行为
来源 MySQL 数据库依赖其二进制日志功能来公开数据变更。
- 可以选择给定 MySQL 来源中的所有数据库或特定数据库,以及数据库或特定表中的所有表。
- 复制所有历史数据。
- 复制所有数据操纵语言 (DML) 变更,例如从指定数据库和表插入、更新和删除。
- 仅复制已提交的更改。
版本
Datastream 支持以下版本的 MySQL 数据库:
- MySQL 5.6
- MySQL 5.7
- MySQL 8.0
Datastream 支持以下类型的 MySQL 数据库:
- 自行托管的 MySQL
- Cloud SQL for MySQL
- Amazon RDS for MySQL
- Amazon Aurora MySQL
- MariaDB
- 阿里云 PolarDB
- Percona Server for MySQL
已知限制
将 MySQL 数据库用作来源的已知限制包括:
- 数据流限 10,000 个表。
- 主键定义为
INVISIBLE
的表无法回填。 - 超过 5 亿行的表无法回填,除非满足以下条件:
- 该表具有唯一索引。
- 索引的所有列都不能为 null。
- 索引不是降序。
- 索引的所有列都包含在数据流中。
- Datastream 在处理事件时定期从来源提取最新的架构。如果架构发生更改,Datastream 会检测架构更改并触发架构提取。不过,某些事件可能无法正确处理,或在两次架构提取之间被丢弃,从而导致数据差异。
- 并非所有对源架构的更改都可以自动检测到,在这种情况下可能会发生数据损坏。以下架构更改可能会导致数据损坏或无法处理下游事件:
- 删除列
- 在表中间添加列
- 更改列的数据类型
- 对列重新排序
- 删除表(如果同一表被重新创建并添加了新的数据,则与此相关)
- 截断表
- Datastream 不支持复制视图。
- Datastream 不支持空间数据类型的列。这些列中的值将替换为
NULL
值。 - Datastream 不支持数据类型为
DATETIME
、DATE
或TIMESTAMP
的列中的零值 (0000-00-00 00:00:00
)。零值会被替换为NULL
值。 - Datastream 不支持复制
JSON
列中包含以下值的行:DECIMAL
、NEWDECIMAL
、TIME
、TIME2
、DATETIME
、DATETIME2
、DATE
、TIMESTAMP
或TIMESTAMP2
。系统会舍弃包含这些值的事件。 - Datastream 不支持二进制日志事务压缩。
- Datastream 不支持源 MySQL 连接配置文件中的 SSL 证书链。仅支持单个 x509 PEM 编码证书。
- Datastream 不支持级联删除。此类事件不会写入二进制日志,因此不会传播到目的地。
- Datastream 不支持故障切换到副本。因此,我们不建议您使用 Datastream 从 Cloud SQL for MySQL 企业 Plus 版来源进行复制。Cloud SQL 企业 Plus 版实例停机维护时间接近于零,在维护期间会故障切换到副本。这会破坏 binlog 的连续性,因此受影响的数据流永久失败。
后续步骤
- 了解如何配置 MySQL 来源以便与 Datastream 搭配使用。