为复制实例选择最佳大小 - 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 会将更改写入到复制实例上的磁盘,直至可在目标上应用。

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

需要考虑的因素

内存和磁盘空间是为您的用例选择合适的复制实例的关键因素。接下来,您可以找到有关用例特征的讨论,您可以通过分析以选择复制实例。

  • Database

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

  • 大型物体

    迁移范围内存在的数据类型可能会影响性能。特别是,大型对象 (LOB) 会影响性能和内存消耗。要迁移 LOB 值,请Amazon DMS执行两步过程。首先,将没有 LOB 值的行Amazon DMS插入到目标中。其次,使用 LOB 值Amazon DMS更新该行。这会影响内存,因此识别源中的 LOB 列并分析其大小非常重要。

  • 加载频率和交易规模

    加载频率和每秒事务数 (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。根据您收集的数据,您可以视根据增加或减小复制实例的大小。