我正在使用 AWS DMS 将本地 MySQL 数据库迁移到 AWS S3。
我尝试创建 cdc 复制任务,该任务将每隔 x 时间或当缓冲区超过特定大小时应用来自源(mysql)的更改。其背后的原因是我希望在 S3 中拥有大文件以优化查询。尽管多次尝试,DMS 不会批量更改并在更改发生时应用它们。
以下是我尝试过的任务设置之一(我尝试过多种变体):
{
"TargetMetadata": {
"BatchApplyEnabled": true
},
"ChangeProcessingTuning": {
"BatchApplyPreserveTransaction": false,
"BatchApplyTimeoutMin": 3600,
"BatchApplyTimeoutMax": 3600,
"MemoryKeepTime": 600
}
}
我怀疑如果 S3 是目标,我想要做的事情是不可能的。我将此基于我在 CloudFront 日志中找到的任务:
2020-03-22T07:49:23 [STREAM_COMPONEN ]I: Loading stream component 'sorter' with id '101' (streamcomponent.c:1003)
2020-03-22T07:49:23 [STREAM_COMPONEN ]I: Loading stream component 'S3' with id '55' (streamcomponent.c:1003)
2020-03-22T07:49:23 [STREAM_COMPONEN ]I: Loading stream component 'Mysql' with id '30' (streamcomponent.c:1003)
2020-03-22T07:49:23 [STREAM_COMPONEN ]I: Force switch to transactional apply mode for File target (endpointshell.c:1397)
2020-03-22T07:49:23 [STREAM_COMPONEN ]I: Loading stream component 'Mysql' with id '30' (streamcomponent.c:1003)
Force switch to transactional apply mode for File target
让我觉得批量应用模式不适用于S3目标。
有一个名为
cdcMaxBatchInterval
的未记录设置,您可以将其用于 S3 目标端点。
cdcMaxBatchInterval=600;
https://forums.aws.amazon.com/thread.jspa?messageID=942302#942302
批量应用模式不适用于 S3,因为它不是数据库