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

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

选择复制实例的最佳大小

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

在满负荷任务期间,单独 Amazon DMS 加载表。默认情况下,一次加载八个表。 Amazon DMS 捕获满载任务期间对源的持续更改,以便稍后可以在目标端点上应用更改。更改缓存在内存中;如果可用内存用完,则将更改缓存到磁盘上。当表的满载任务完成后,会 Amazon DMS 立即将缓存的更改应用于目标表。

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

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

需要考虑的因素

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

  • 数据库和表大小

    数据卷有助于确定可优化完全加载性能的任务配置。例如,对于两个 1 TB 的架构,您可以将表分成四个 500 GB 的任务,然后并行运行这些表。可能的并行度取决于复制实例中可用的 CPU 资源。因此,最好了解数据库和表的大小以优化完全加载性能。它有助于确定您可以执行的任务数。

  • 大型对象

    迁移范围内涵盖的数据类型可能会影响性能。尤其是大型对象(LOB),此类对象会影响性能和内存消耗。要迁移 LOB 值,请 Amazon DMS 执行两步过程。首先,在目标中 Amazon DMS 插入不带 LOB 值的行。其次,使用 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。根据您收集的数据,您可以视根据增加或减小复制实例的大小。