选择复制实例的最佳大小 - Amazon Database Migration Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

选择复制实例的最佳大小

如何选择合适的复制实例取决于与您的使用案例相关的多种因素。为帮助您了解如何使用复制实例资源,请参阅以下讨论。其中涵盖了完全加载 + CDC 任务的常见场景。

在完整的加载任务中,Amazon DMS 逐个加载表。默认情况下,一次加载八个表。Amazon DMS 在完整加载任务期间捕获对源的持续更改,因此以后可在目标终端节点上应用更改。更改缓存在内存中;如果可用内存用完,则将更改缓存到磁盘上。表的完全加载任务完成后,Amazon DMS 立即将缓存的更改应用到目标表。

在应用表的所有未完成的缓存更改后,目标终端节点将处于事务一致状态。此时,目标与源终端节点就最后的缓存更改而言同步。然后,Amazon DMS 开始在源和目标之间进行持续复制。为此,Amazon DMS从源事务日志获取更改操作,并按照事务一致的方式将其应用到目标。(此过程假设未选择批量优化应用)。Amazon DMS如果可能,将持续更改流式传输到复制实例上的内存。否则,Amazon DMS 会将更改写入到复制实例上的磁盘,直至可在目标上应用。

您对复制实例如何应对更改处理以及在该流程中如何使用内存有一定的控制能力。有关如何优化更改处理的更多信息,请参阅更改处理优化设置

需要考虑的因素

内存和磁盘空间是为您的使用案例选择合适的复制实例的关键因素。在下面,您可以找到关于要分析以选择复制实例的讨论。

  • 数据库和表大小

    数据量有助于确定任务配置以优化满负载性能。例如,对于两个 1 TB 模式,您可以将表分成四个 500 GB 的任务,然后并行运 parallel 它们。可能的并行性取决于复制实例中可用的 CPU 资源。这就是为什么了解数据库和表的大小以优化满负载性能是个好主意。它有助于确定可能拥有的任务数量。

  • 大型对象

    迁移范围中存在的数据类型可能会影响性能。特别是,大对象 (LOB) 会影响性能和内存消耗。要迁移 LOB 值,Amazon DMS执行两个步骤的过程。首先,Amazon DMS在没有 LOB 值的情况下将行插入到目标中。第二,Amazon DMS使用 LOB 值更新行。这对内存有影响,因此必须识别源中的 LOB 列并分析它们的大小。

  • 加载频率和交易规模

    加载频率和每秒 TPS 事务数 (TPS) 会影响内存使用率。大量的 TPS 或数据操纵语言 (DML) 活动导致内存使用率较高。之所以出现这种情况,因为 DMS 缓存更改,直到将更改应用到目标。在 CDC 期间,这会导致交换(由于内存溢出导致写入物理磁盘),从而导致延迟。

  • 表键和参照完整性

    有关表格键的信息决定了用于迁移数据的 CDC 模式(批量应用或事务应用)。一般来说,事务性应用比批量应用慢。对于长时间运行的事务,可能需要迁移许多更改。当你使用事务应用时,Amazon DMS与批量应用相比,可能需要更多的内存来存储更改。如果迁移没有主键的表,批量应用将失败,DMS 任务将移至事务应用模式。当 CDC 期间表之间的参照完整性处于活动状态时,Amazon DMS默认情况下使用事务应用。有关批量应用与事务应用相比的更多信息,请参阅如何使用 DMS 批量应用功能来提高 CDC 复制性能?.

使用这些指标来确定您是需要对复制实例进行计算优化还是内存优化。

常见问题

您可能会遇到以下常见问题,这些问题导致迁移期间复制实例上的资源争用。有关复制实例指标的信息,请参阅复制实例指标.

  • 如果复制实例中的内存不足,则会导致向磁盘写入数据。从磁盘读取可能会导致延迟,您可以通过调整具有足够内存的复制实例的大小来避免延迟。

  • 分配给复制实例的磁盘大小可能小于所需的磁盘大小。当内存中的数据溢出过时,使用磁盘大小;它还用于存储任务日志。最大 IOPS 也取决于它。

  • 运行多个任务或具有高并行度的任务会影响复制实例的 CPU 消耗。这会减慢任务的处理速度并导致延迟。

最佳实践

在调整复制实例大小时,请考虑这两种最常见的最佳做法。有关更多信息,请参阅 Amazon Database Migration Service 的最佳实践

  1. 调整工作负载大小并了解它是计算机密集型还是内存密集型。基于此,您可以确定复制实例的类和大小:

    • Amazon DMS处理内存中的 LOB。此操作需要相当多的内存。

    • 任务数量和线程数会影响 CPU 消耗。避免使用八个以上MaxFullLoadSubTasks在满载操作期间。

  2. 当满负载期间工作负载高时,增加分配给复制实例的磁盘空间。这样,复制实例可以使用分配给它的最大 IOPS。

前面的准则并未涵盖所有可能的场景。在确定复制实例的大小时,考虑特定使用案例的具体细节非常重要。

上述测试显示 CPU 和内存随着不同的工作负载而异。特别是,LOB 会影响内存,任务计数或并行度会影响 CPU。开始运行迁移之后,请监控 CPU、可释放内存、空闲存储以及复制实例的 IOPS。根据您收集的数据,您可以视根据增加或减小复制实例的大小。