关于 Snowflake Connector for MySQL¶
备注
使用 Snowflake Connector for MySQL 需遵守 Connector 条款。
Snowflake Connector for MySQL 允许您执行以下操作:
从 MySQL 数据库中将数据加载到 Snowflake。
配置复制,以便将 MySQL 数据库中的更改复制到 Snowflake。
要处理 Snowflake 和 MySQL 之间的连接,连接器使用代理。代理以 Docker 映像的形式分发。代理在您的网络中运行,用于将数据推送到您的 Snowflake 账户。
备注
Snowflake Connector for MySQL 要求始终运行代理应用程序的一个实例。
正在进行的增量更新使用变更数据捕获 (CDC) 技术,该技术捕获在源数据库上执行的变更。变更包括 INSERT、UPDATE 和 DELETE 操作,这些操作会自动复制到 Snowflake 中的目标数据库。
多个应用程序实例¶
您可以在 Snowflake 账户中安装多个 Snowflake Connector for MySQL 实例。有关更多信息,请参阅 可选:安装 Snowflake Connector for MySQL 的多个实例。
Azure 专用链接¶
Snowflake Connector for MySQL 支持 Azure 专用链接。有关更多信息,请参阅:
代理和连接器应用程序兼容性¶
Snowflake Connector for MySQL 是针对特定版本发布的,描述为 x.y.z 版本,其中 x 为主要版本,y 为次要版本,z 为补丁。dockerhub 上的代理也随 X.Y.Z 版本发布。Snowflake Connector for MySQL 的每个 x.y.z 版本都支持具有相同主版本 X=x 的所有代理,而不是较大的次要版本代理。此外,Snowflake Connector for MySQL 的每个 x.0.0 版本都支持所有 (x-1).Y.Z 版本的代理,适用于所有 Y 和 Z。
已知限制¶
以下各节介绍连接器的已知限制。
表的最大数量¶
该连接器最多可与 200 个添加到复制中的源表配合使用。添加更多表可能会导致连接器变得不稳定。
事务大小¶
连接器受与 MySQL 组复制相同的 限制 (https://dev.mysql.com/doc/refman/8.4/en/group-replication-limitations.html#group-replication-limitations-transaction-size)。这意味着单个事务必须适合不超过 4GB 的二进制日志消息。超过此大小的事务将导致源表被标记为永久失败,并且需要对关联的表进行完整快照重新加载。
连接器可用性¶
安装连接器时请注意以下限制:
不支持政府区域中的账户。
要安装和配置连接器,您必须以具有 ACCOUNTADMIN 角色的用户的身份登录。目前不支持其他角色。
类型兼容性¶
由于源数据库和 Snowflake 列类型之间的差异,由于最大列容量或允许的范围,某些值无法转换和写入 Snowflake。例如:
Snowflake
BINARY
类型的最大长度为 8 MB(8,388,608 字节)Snowflake 日期类型(如
DATE
、DATETIME
和TIMESTAMP
)最大年份为 9999Snowflake
VARCHAR
类型的最大长度为 16 MB(16,777,216 字节)
如果发生这种不兼容,表的复制将停止,并失败。
源表架构更改¶
下表显示了对源表架构的不同类型的更改,以及是否支持这些更改,如果支持,如何支持。
新列名应遵循“标识符限制”一节中所述的限制。
架构更改的类型 |
支持? |
备注 |
---|---|---|
添加新列 |
是 |
新列将在目标表中可见,就像复制开始时存在的任何其他列一样。 无法添加与以前删除或重命名的列同名的新列。 例如,如果列 |
删除现有列 |
是 |
如果源表中删除了一列,则目标表中不会删除该列。相反,采用软删除方法,该列将重命名为 例如,如果删除列 |
重命名列 |
是 |
重命名列等同于删除列,然后使用新名称创建一个新列。删除操作遵循上一行中解释的软删除方法。 例如,如果将列 无法将列重命名为与以前删除或重命名的列相同的名称。例如,如果列 |
更改列的类型 |
部分 |
只有在 Snowflake 中将前一个类型和新类型都映射到同一类型时,才能更改源表列的类型。 在任何其他情况下,复制都将永久失败。 |
更改数值列的精度 |
否 |
更改源表列的精度将导致复制永久失败。 |
更改数值列的小数位数 |
否 |
更改源表列的比例将导致复制永久失败。 |
更改主键定义 |
否 |
更改源表列的主键定义将导致复制永久失败。 |
高容量列¶
活动代理连续从二进制日志中读取所有事件,即使某些事件引用了未添加用于复制的源表也是如此。如果二进制日志复制包含非常大的事件,如类 BLOB 列的更新,则代理可能会因为缺少可用内存而崩溃。
主键¶
不支持没有主键的表。
标识符限制¶
目前,连接器不支持在复制架构、表或列名中使用 "
字符。此外,不支持以下关键字:
- 对于架构名称:
INFORMATION_SCHEMA
- 对于列名称:
_SNOWFLAKE_INSERTED_AT
_SNOWFLAKE_UPDATED_AT
_SNOWFLAKE_DELETED
后缀为
__SNOWFLAKE_DELETED
的名称在 Snowflake 保留和有限关键字 中标记为
Cannot be used as column name
的列名
MySQL 版本 >= 8.0.0¶
目前,连接器依赖于 MySQL 版本 8 中推出的 binlog_row_metadata = full
配置属性。