问题描述:
文档[1]中描述MySQL compatible Databases作为DMS任务的源端,不支持MySQL 分区表的 DDL 更改。
在源端MySQL进行分区添加时,日志里会出现如下报错:
[SOURCE_CAPTURE ]W: Cannot change partition in table 'members'. Altering partitions is not currently supported (mysql_endpoint_capture.c:1988)
[SOURCE_CAPTURE ]W: Suspending table 'members', table id '2' (mysql_endpoint_capture.c:1784)
分析过程 及 解决方案:
文档[1]里已经有明确的说明:
-
AWS DMS 不支持 MySQL 分区表的 DDL 更改。要跳过 CDC 期间因分区 DDL 更改而暂停表的情况,请将
skipTableSuspensionForPartitionDdl
设置为true
。
但是其实这个描述不是很准确,因为MySQL作为源端DMS Endpoint其实不支持这个 endpoint setting. 进行这个操作是会出现报错的:
The endpoint setting "skipTableSuspensionForPartitionDdl" for endpoint engine "mysql" isn't valid. Please correct it and try again.
这个部分应该加在eca部分:
点击MySQL Source的Actions - modify页面,将Use endpoint connection attributes 前面的对钩勾上,然后在Extra connection attributes下面把这部分加入就行:
skipTableSuspensionForPartitionDdl=true
之后点击save。
在加上这个ECA以后,源端MySQL再次更改partitions就不会报错了,日志里是如下信息:
00009418: 2024-07-22T05:09:54 [SOURCE_CAPTURE ]I: set_columns_orig_type for shiran.members (mysql_endpoint_metadata.c:643)
00009418: 2024-07-22T05:09:54 [SOURCE_CAPTURE ]I: Skip suspension for table 'members' when table partition DDL event received (mysql_endpoint_capture.c:1978)
参考文档:
[1] 将与 MySQL 兼容的数据库作为 Amazon DMS源 - Amazon 数据库迁移服务