跳至内容

什么是交换文件?为什么这些文件会占用我的 AWS DMS 实例上的空间?

1 分钟阅读
0

AWS Database Migration Service (AWS DMS) 正在生成交换文件,这些文件占用了我的数据库实例上的存储空间。我想知道什么是交换文件,以及如何减少交换文件的生成。

简短描述

SOURCE_CAPTURE 进程的处理速度快于 TARGET_APPLY 组件时,SORTER 组件会将积压的事件缓存到磁盘或交换文件中。或者,当长时间运行的事务超过最大内存分配 (MemoryLimitTotal) 和时间限制 (MemoryKeepTime) 时,内存或交换文件中的事务会转移到复制实例磁盘中。

**注意:**这些交换文件与操作系统在服务器没有足够内存进行处理时所创建的操作系统 (OS) 交换文件不同。因此,这些数据不会包含在 Amazon CloudWatch 的 SwapUsage 指标中。

解决方法

您可能会在任务日志中看到一条类似于以下内容的消息:

“[SORTER ]I: 已暂停从源中读取。交换文件使用的总存储空间超过了 1048576000 字节的限制 (sorter_transaction.c:110) 00000849: 2021-04-28T07:19:20:987696 [SORTER ]I: 已恢复从源中读取 (sorter_transaction.c:116)]”

AWS DMS 版本 3.4.2 及更高版本包含一项可防止出现存储已满情况的功能。此功能设置了您在复制实例的存储卷上可以拥有的最大交换文件数。当 SORTER 组件使用的交换文件大小达到最大大小 1 GB 时,您会收到上述消息。

当达到配额时,SORTER 组件会暂停 SOURCE CAPTURE。然后,AWS DMS 会将交换文件中的更改应用到目标数据库。当 DMS 应用了交换的更改后,或者当交换文件小于 1 GB 时,AWS DMS 会恢复 SOURCE CAPTURE

**注意:**当 AWS DMS 应用更改时,任务会继续运行。SORTER 组件仅会暂停 SOURCE CAPTURE

减少交换文件的生成

要减少或避免在 AWS DMS 实例上生成交换文件,请检查 AWS DMS 任务上目标延迟高的原因。

要改进 TARGET_APPLY,请根据您的引擎类型使用批量应用模式ParallelApplyThreads

如果在源数据库遇到长时间运行的事务,请在源数据库中使用频繁提交。

当复制实例有可用内存时,请增加 MemoryLimitTotalMemoryKeepTime 的值,以便更改在交换到磁盘之前可以在内存中停留更长时间。请务必增加这两个参数的值,以便 SORTER 组件不会达到配额。

相关信息

Change processing tuning settings

AWS 官方已更新 1 年前