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

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

Amazon Database Migration Service 的最佳实践

要想尽可能高效地使用 Amazon Database Migration Service (Amazon DMS),请参阅此部分中有关以最有效方式迁移数据的建议。

Amazon Database Migration Service 的迁移规划

在规划使用 Amazon Database Migration Service 进行数据库迁移时,请考虑以下事项:

  • 将源数据库和目标数据库连接到Amazon DMS复制实例时,您可以配置网络。这样做可以简单地连接两个Amazon资源与您的复制实例处于同一 Virtual Private Cloud (VPC) 中。它可以包括更复杂的配置,例如将本地数据库通过虚拟专用网络 (VPN) 连接到 Amazon RDS 数据库实例。有关更多信息,请参阅数据库迁移的网络配置

  • 源和目标终端节点— 确保知道源数据库中的哪些信息和表需要迁移到目标数据库。Amazon DMS支持基本架构迁移,包括创建表和主键。然而,Amazon DMS不会在目标数据库中自动创建辅助索引、外键、用户帐户等。根据源数据库和目标数据库引擎,您可能需要设置补充日志记录或者修改源数据库或目标数据库的其他设置。有关更多信息,请参阅 数据迁移的源数据迁移的目标

  • 架构和代码迁移–Amazon DMS不执行架构或代码转换。您可以使用 Oracle SQL Developer、MySQL Workbench 和 pgAdmin III 等工具来转换架构。要将现有架构转换到不同的数据库引擎,您可以使用Amazon Schema Conversion Tool(Amazon SCT)。它可以创建目标架构,并可以生成和创建整个架构:表、索引、视图等。您还可以使用此工具来将 PL/SQL 或 TSQL 转换为 PgSQL 和其他格式。有关Amazon SCT,请参阅Amazon SCT用户指南.

  • 不支持的数据类型— 确保您可以将源数据类型转换为目标数据库的等效数据类型。有关支持的数据类型的更多信息,请参阅数据存储的源或目标部分。

  • 诊断支持脚本结果-在规划迁移时,建议您运行诊断支持脚本。通过这些脚本的结果,您可以找到有关潜在迁移失败的高级信息。

    如果您的数据库有支持脚本,请使用以下部分相应脚本主题中的链接下载该脚本。验证并查看脚本后,您可以根据本地环境中脚本主题中描述的过程运行该脚本。脚本运行完成后,您可以查看结果。我们建议您将运行这些脚本作为任何故障排除工作的第一步。这些结果在使用Amazon Web Services Support团队。有关更多信息,请参阅在中使用诊断支持脚本Amazon DMS

  • 迁移前评估— A迁移前评估评估数据库迁移任务的指定组件,以帮助确定任何可能阻止迁移任务按预期运行的问题。通过使用此评估,您可以在运行新任务或已修改的任务之前确定潜在问题。有关使用迁移前评估的更多信息,请参阅为任务启用和使用迁移前评估.

转换架构

Amazon DMS 不执行架构或代码转换。如果需要将现有架构转换到不同的数据库引擎,可以使用Amazon SCT.Amazon SCT将源对象、表、索引、视图、触发器和其他系统对象转换为目标数据定义语言 (DDL) 格式。您还可以使用Amazon SCT将大部分应用程序代码(例如 PL/SQL 或 TSQL)转换为等效的目标语言。

你可以得到Amazon SCT作为免费下载Amazon. 有关 Amazon SCT 的更多信息,请参阅 Amazon SCT 用户指南

如果您的源和目标终端节点位于同一数据库引擎上,则可以使用 Oracle SQL Developer、MySQL Workbench 或 PgAdmin4 等工具来移动架构。

查看Amazon DMS公共文档

我们强烈建议您通过Amazon DMS在第一次迁移之前,您的源端点和目标端点的公共文档页面。本文档可以帮助您确定迁移的先决条件,并在开始之前了解当前的限制。有关更多信息,请参阅使用AmazonDMS 终端节点

在迁移过程中,公共文档可以帮助您解决Amazon DMS. 文档中的故障排除页面可以帮助您解决常见问题Amazon DMS和选定的终端数据库。有关更多信息,请参阅排除 Amazon Database Migration Service 中的迁移任务问题

运行概念验证

为了帮助您在数据库迁移的早期阶段发现环境的问题,我们建议您运行一次小型测试迁移。执行此操作还可以帮助您设置更真实的迁移时间线。此外,您可能需要运行全面测试迁移,以测量Amazon DMS可以通过网络处理数据库的吞吐量。在此期间,我们建议您对初始满负载和持续复制进行基准测试和优化。这样做可以帮助您了解网络延迟并衡量整体性能。

此时,您还有机会了解数据配置文件以及数据库的大小,包括以下内容:

  • 大小、中、小的表的数量。

  • 操作方法Amazon DMS处理数据类型和字符集转换。

  • 包含大对象 (LOB) 列的表数量。

  • 运行测试迁移需要多长时间。

改进 Amazon DMS 迁移的性能

Amazon DMS 迁移的性能受多种因素影响:

  • 源上的资源可用性。

  • 可用的网络吞吐量。

  • 复制服务器的资源容量。

  • 目标接收更改的能力。

  • 源数据的类型和分布。

  • 要迁移的对象数量。

可以使用下面所述的部分或全部最佳实践来改进性能。是否可以使用这些实践之一取决于您的特定使用案例。您可以在下面找到一些限制:

配置正确的复制服务器

Amazon DMS是在 Amazon EC2 实例上运行的托管服务。此服务连接到源数据库,读取源数据、格式化数据以供目标数据库使用,并将数据加载到目标数据库中。

大部分这种处理发生在内存中。但是,大型事务可能需要部分缓冲到磁盘上。缓存事务和日志文件也会写入磁盘。在以下部分中,您可以了解选择复制服务器时需要考虑的事项。

CPU

Amazon DMS专为异构迁移而设计,但它也支持同类迁移。要执行同类迁移,请首先将每个源数据类型转换为其等效Amazon DMS数据类型。然后将每个Amazon DMS类型数据设置为目标数据类型。您可以在Amazon DMS用户指南.

适用于Amazon DMS以最佳方式执行这些转换,则在转换发生时,CPU 必须可用。CPU 过载并没有足够的 CPU 资源可能会导致迁移缓慢,这也会导致其他副作用。

复制实例类

一些较小的实例类足够用于测试服务或小型迁移。如果迁移涉及大量表,或者如果您打算运行多个并发复制任务,请考虑使用较大的实例之一。较大的实例可能是一个好主意,因为该服务会占用相当数量的内存和 CPU。

T2 类型实例旨在提供适度的基准性能,并能够根据您工作负载的需要实现性能的显著突增。它们旨在用于不经常或不持续使用完整 CPU 但偶尔需要突增性能的工作负载。T2 实例非常适合于通用工作负载,例如 Web 服务器、开发人员环境和小型数据库。如果您正在对缓慢迁移进行故障排除并使用 T2 实例类型,请检查 CPU 使用率主机指标。它可以显示您是否在该实例类型的基线上突发。

C4 实例类旨在为计算机密集型工作负载交付最高级别的处理器性能。它们显著提高了每秒数据包数 (PPS) 性能,降低了网络抖动,并减少了网络延迟。Amazon DMS可能会占用大量 CPU,尤其是在执行异构迁移和复制时,例如从 Oracle 迁移至 PostgreSQL。针对这些情况,C4 实例是理想选择。

R4 实例类针对内存密集型工作负载优化了内存。使用持续迁移或复制高吞吐量事务系统Amazon DMS有时会占用大量 CPU 和内存。R4 实例的每个 vCPU 包含更多内存。

Amazon DMS支持 R5 和 C5 实例类

R5 实例类是内存优化型实例,旨在为处理内存中的大型数据集的工作负载提供快速性能。使用持续迁移或复制高吞吐量事务系统Amazon DMS有时会占用大量 CPU 和内存。R5 实例为每个 vCPU 提供比 R4 额外 5% 的内存,最大大小可提供 768 GiB 的内存。此外,与 R4 相比,R5 实例每 GiB 提高 10% 的价格,CPU 性能提高了大约 20%。

针对计算密集型工作负载进行了优化的 C5 实例类,并以低廉的每计算价格提供经济高效的高性能。它们实现了显著更高的网络性能。弹性网络适配器 (ENA) 为 C5 实例提供高达 25 Gbps 的网络带宽和高达 14 Gbps 的专用带宽。Amazon DMS可能会占用大量 CPU,尤其是在执行异构迁移和复制时,例如从 Oracle 迁移至 PostgreSQL。对于这些情况,C5 实例是理想选择。

存储

根据实例类,您的复制服务器附带 50 GB 或 100 GB 的数据存储。此存储用于存储加载期间收集的日志文件以及所有缓存更改。如果您的源系统繁忙或处理大型事务,您可能需要增加存储。如果在复制服务器上运行多个任务,则可能还需要增加存储空间。但是,默认数量通常已经足够。

中的所有存储卷Amazon DMS是 GP2 或通用固态硬盘 (SSD)。GP2 卷的基本性能为每秒三次 I/O 操作 (IOPS),并且在信用基础上能够突增高达 3,000 次 IOPS。作为一个经验法则,检查ReadIOPSWriteIOPS衡量指标。请确保这些值的总和不会跨越该卷的基本性能。

多可用区

选择多可用区实例可以保护您的迁移免受存储故障的影响。大多数迁移是瞬时性的,不打算长时间运行。如果您使用Amazon DMS为持续复制目的,选择多可用区实例可以在出现存储问题时提高您的可用性。

并行加载多个表

默认情况下,Amazon DMS 一次加载八个表。在使用非常大的复制服务器时,例如 dms.c4.xlarge 或更大的实例,您可以稍微提升此值来实现一些性能改进。但是,某些时候增加此并行度会降低性能。如果您的复制服务器相对较小,例如 dms.t2.medium,则建议您减少并行加载的表数量。

若要更改此数字,请在Amazon Web Services Management Console下,打开控制台,选择任务,选择创建或修改任务,然后选择高级设置. 在 Tuning Settings (优化设置) 下,更改 Maximum number of tables to load in parallel (并行加载的最大表数) 选项。

要更改此数,请使用Amazon CLI下,更改MaxFullLoadSubTasks参数TaskSettings.

使用并行满负载

您可以使用基于分区和子分区的 Oracle、微软 SQL 服务器、MySQL、Sybase 和 IBM Db2 LUW 源的并行加载。这样做可以改善整体满载持续时间。此外,在运行Amazon DMS迁移任务,您可以加快大型表或分区表的迁移。为此,请将表拆分为数据段,并在同一迁移任务中并行加载数据段。

要使用并行加载,请创建一个类型为table-settings使用parallel-load选项。在table-settings规则中,为要并行加载的一个或多个表指定选择条件。要指定选择条件,请将type元素parallel-load设置为以下某个设置:

  • partitions-auto

  • subpartitions-auto

  • partitions-list

  • ranges

  • none

有关这些设置的更多信息,请参阅表和集合设置规则和操作.

使用索引、触发器和参照完整性约束

索引、触发器和引用完整性约束可能会影响您的迁移性能,并导致迁移失败。这些影响迁移的影响取决于您的复制任务是完全加载任务还是持续复制(更改数据捕获或 CDC)任务。

对于完全加载任务,建议您删除主键索引、二级索引、引用完整性约束和数据操作语言 (DML) 触发器。或者,您也可以将其创建延迟到完全加载任务完成之后。完全加载任务期间不需要索引,存在索引会导致维护开销。由于完整加载任务一次加载一组表,这会违反引用完整性约束。同样,插入、更新和删除触发器会导致错误,例如,以前批量加载的表触发行插入。由于增加了处理量,其他类型的触发器也会影响性能。

如果数据量相对较小,并且不担心额外增加的迁移时间,您可以在完全加载任务之前生成主键和二级索引。始终关闭参照完整性约束和触发器。

对于完全加载加 CDC 任务,建议您在 CDC 阶段之前添加二级索引。由于Amazon DMS使用逻辑复制,请确保位于支持 DML 操作的二级索引来防止全表扫描。您可以在 CDC 阶段之前暂停复制任务以构建索引、创建触发器和创建引用完整性约束,然后重新启动任务。

关闭备份和事务日志记录

迁移到 Amazon RDS 数据库时,在您准备好切换之前,最好禁用目标上的备份和多可用区。同样,迁移到 Amazon RDS 以外的系统时,通常最好禁用目标上的任何日志记录,直到切换。

使用多个任务

有时候,为单个迁移使用多个任务可以提升性能。如果您有不参与到通用事务的表集,也许可将迁移拆分为多个任务。 将维护一个任务中的事务一致性,因此单独任务中的表不参与到通用事务中非常重要。此外,每个任务独立读取事务流,因此请注意,不要对源数据库施加过多压力。

您可以使用多个任务来创建单独的复制流。通过此操作,您可以并行处理源上的读取、复制实例上的流程以及目标数据库的写入。

优化更改处理

默认情况下,Amazon DMS 在事务模式下处理更改,这可保护事务完整性。如果您可以承受事务完整性的临时失效,可以改为使用批量优化应用 选项。该选项有效分组事务并批量应用,以实现提高效率的目的。使用批处理优化的应用选项几乎总是违反参照完整性约束。因此,我们建议您在迁移过程中关闭这些约束,并将其作为切换过程的一部分再次打开。

使用您自己的本地名称服务器

通常为,Amazon DMS复制实例使用 Amazon EC2 实例中的域名系统 (DNS) 解析程序来解析域终端节点。但是,如果您使用 Amazon Route 53 解析程序,则可以使用自己的本地名称服务器来解析某些终端节点。使用此工具,您可以在本地和Amazon使用入站和出站终端节点、转发规则和专用连接。使用本地名称服务器的好处包括提高了安全性和防火墙后的易用性。

如果您有入站终端节点,则可以使用源于本地的 DNS 查询来解析Amazon托管域。要配置终端节点,请在要提供解析程序的每个子网中分配 IP 地址。要在您的本地 DNS 基础架构和Amazon,请使用Amazon Direct Connect或虚拟专用网络 (VPN)。

出站终端节点连接到您的本地名称服务器。名称服务器仅授予对包含在允许列表中并在出站终端节点中设置的 IP 地址的访问权限。名称服务器的 IP 地址是目标 IP 地址。为出站终端节点选择安全组时,请选择复制实例使用的相同安全组。

要将选定域转发到名称服务器,请使用转发规则。出站终端节点可以处理多个转发规则。转发规则的范围是您的 Virtual Private Cloud (VPC)。通过使用与 VPC 关联的转发规则,您可以预配Amazon云。从这个逻辑隔离的部分,您可以启动Amazon虚拟网络中的资源。

您可以将本地 DNS 基础设施中托管的域配置为设置出站 DNS 查询的条件转发规则。对其中一个域进行查询时,规则触发尝试将 DNS 请求转发到配置了规则的服务器。再次,通过Amazon Direct Connect或 VPN 是必需的。

下图演示了 Route 53 解析程序架构。


                Route 53 Resolver 架构

有关 Route 53 DNS 解析程序的更多信息,请参阅Route 53 解析程序入门中的Amazon Route 53 开发者指南.

将 Amazon Route 53 解析程序与Amazon DMS

您可以为Amazon DMS来解析端点,使用Amazon Route 53 Resolver.

要为创建本地名称服务器Amazon DMS基于 Route 53

  1. 登录到Amazon Web Services Management Console并通过以下网址打开 Route 53 控制台https://console.aws.amazon.com/route53/.

  2. 在 Route 53 控制台上,选择Amazon要在其中配置 Route 53 解析程序的区域。Route 53 解析程序是特定于某个地区的。

  3. 选择查询方向-入站、或出站。

  4. 提供您的入站查询配置:

    1. 输入终端节点名称并选择 VPC。

    2. 从 VPC 内分配一个或多个子网(例如,选择两个子网以确保可用性)。

    3. 分配特定的 IP 地址以用作终端节点,或者让 Route 53 解析程序自动分配它们。

  5. 为本地域创建规则,以便 VPC 内的工作负载可以将 DNS 查询路由到您的 DNS 基础设施。

  6. 为本地 DNS 服务器输入一个或多个 IP 地址。

  7. 提交您的规则。

创建所有内容后,您的 VPC 与您的入站和出站规则相关联,并且可以开始路由流量。

有关 Route 53 解析程序的更多信息,请参阅Route 53 解析程序入门中的Amazon Route 53 开发者指南.

迁移大型二进制对象 (LOB)

一般而言,Amazon DMS分两个阶段迁移 LOB 数据:

  1. Amazon DMS 会在目标表中创建一个新行,并用除相关 LOB 值之外的所有数据来填充该行。

  2. Amazon DMS 使用 LOB 数据更新目标表中的行。

LOB 的这种迁移过程要求,在迁移期间,目标表上的所有 LOB 列都必须可为空。即使源表上的 LOB 列不可为空,也是如此。如果 Amazon DMS 创建目标表,默认情况下会将 LOB 列设置为可为空值。在某些情况下,您可能会使用其他机制创建目标表,例如导入或导出。在这种情况下,请确保 LOB 列可为空值。

此要求有一个例外情况。假设您执行从 Oracle 源到 Oracle 目标的同类迁移,并且您选择 Limited Lob mode (受限 LOB 模式)。在这种情况下,将一次填充整行,包括任何 LOB 值。对于此类情况,如果需要,Amazon DMS 可以使用不可为空的约束创建目标表 LOB 列。

使用受限 LOB 模式

Amazon DMS当迁移包含 LOB 值时,使用两种方法来平衡性能与简便性:

  1. Limited LOB mode (受限 LOB 模式) 迁移所有最大为用户指定的大小限制 (默认为 32 KB) 的 LOB 值。大于此大小限制的 LOB 值必须手动迁移。Limited LOB mode (受限 LOB 模式) 是所有迁移任务的默认值,通常提供最佳性能。但是,请确保最大 LOB 大小参数设置是否正确。将此参数设置为所有表的最大 LOB 大小。

  2. Full LOB mode (完整 LOB 模式) 迁移表中的所有 LOB 数据,而不受大小限制。Full LOB mode (完整 LOB 模式) 提供了移动表中所有 LOB 数据的便利性,不过该过程对性能可能会有显著影响。

对于某些数据库引擎(如 PostgreSQL),Amazon DMS 处理 JSON 数据类型的方式类似于 LOB。确保如果您选择了受限的 LOB 模式最大 LOB 大小选项设置为不会导致 JSON 数据被截断的值。

Amazon DMS 完全支持使用大对象数据类型(BLOB、CLOB 和 NCLOB)。以下源终端节点具有完整的 LOB 支持:

  • Oracle

  • Microsoft SQL Server

  • ODBC

以下目标终端节点具有完整的 LOB 支持:

  • Oracle

  • Microsoft SQL Server

以下目标终端节点具有有限的 LOB 支持。对于此目标终端节点,您不能使用无限制的 LOB 大小。

  • Amazon Redshift

  • Amazon S3

对于具有完整 LOB 支持的终端节点,您还可以为 LOB 数据类型设置大小限制。

改进 LOB 性能

迁移 LOB 数据时,您可以指定以下不同的 LOB 优化设置。

每表 LOB 设置

使用每表 LOB 设置,您可以覆盖部分或全部表的任务级 LOB 设置。为此,请定义lob-settings在您的table-settings规则。下面是一个包含一些较大 LOB 值的示例表。

SET SERVEROUTPUT ON CREATE TABLE TEST_CLOB ( ID NUMBER, C1 CLOB, C2 VARCHAR2(4000) ); DECLARE bigtextstring CLOB := '123'; iINT; BEGIN WHILE Length(bigtextstring) <= 60000 LOOP bigtextstring := bigtextstring || '000000000000000000000000000000000'; END LOOP; INSERT INTO TEST_CLOB (ID, C1, C2) VALUES (0, bigtextstring,'AnyValue'); END; / SELECT * FROM TEST_CLOB; COMMIT

接下来,创建迁移任务并使用新的lob-settings规则。这些区域有:bulk-max-siz值确定 LOB 的最大大小 (KB)。如果它大于指定的大小,它将被截断。

{ "rules": [ { "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "HR", "table-name": "TEST_CLOB" }, "rule-action": "include" }, { "rule-type": "table-settings", "rule-id": "2", "rule-name": "2", "object-locator": { "schema-name": "HR", "table-name": "TEST_CLOB" }, "lob-settings": { "mode": "limited", "bulk-max-size": 16 } ] }

即使此Amazon DMS任务创建时使用FullLobMode : true,则按表 LOB 设置直接Amazon DMS将此特定表中的 LOB 数据截断为 16,000。您可以检查任务日志以确认这一点。

721331968: 2018-09-11T19:48:46:979532 [SOURCE_UNLOAD] W: The value of column 'C' in table 'HR.TEST_CLOB' was truncated to length 16384

内联 LOB 设置

在创建Amazon DMS任务,LOB 模式将确定 LOB 的处理方式。

全 LOB 模式和有限 LOB 模式,每个模式都有自己的优点和缺点。内联 LOB 模式结合了全 LOB 模式和有限 LOB 模式的优势。

当需要复制小型和大型 LOB 并且大多数 LOB 较小时,可以使用内联 LOB 模式。当您选择此选项时,在完全加载期间Amazon DMS任务传输小型 LOB,这更高效。这些区域有:Amazon DMS任务通过从源表执行查找来传输大 LOB。

在更改处理过程中,通过从源表执行查找来复制小 LOB 和大 LOB。

当您使用内联 LOB 模式时,Amazon DMS任务将检查所有 LOB 大小以确定要内联传输的 LOB 大小。使用完整 LOB 模式复制大于指定大小的 LOB。因此,如果您知道大部分 LOB 大于指定的设置,最好不要使用此选项。相反,允许无限的 LOB 大小。

您可以使用任务设置中的属性配置此选项InlineLobMaxSize,仅在FullLobMode设置为true. 默认值InlineLobMaxSize为 0。范围为 1 KB 到 2 GB。

例如,您可以使用以下Amazon DMS任务设置。此处设置InlineLobMaxSize设置为 5 会导致所有小于或等于 5,000 的 LOB 被内联传输。

{ "TargetMetadata": { "TargetSchema": "", "SupportLobs": true, "FullLobMode": true, "LobChunkSize": 64, "LimitedSizeLobMode": false, "LobMaxSize": 32, "InlineLobMaxSize": 5, "LoadMaxFileSize": 0, "ParallelLoadThreads": 0, "ParallelLoadBufferSize":0, "BatchApplyEnabled": false, "TaskRecoveryTableEnabled": false}, . . . }

提高使用行筛选迁移大型表时的性能

要提高迁移大型表时的性能,您可将迁移过程分解为多个任务。要通过行筛选将迁移分解为多个任务,您可以使用键或分区键。例如,如果您有一个整数主键 ID,范围从 1 到 8000000,您可以使用行筛选创建 8 个任务,每个任务迁移 100 万条记录。

要在控制台中应用行筛选,请打开控制台,选择任务,然后创建新的任务。在 Table mappings (表映射) 部分中,为 Selection Rule (选择规则) 添加一个值。然后可以使用小于或等于、大于或等于、等于或范围条件 (介于两个值之间) 添加列筛选。有关列筛选的更多信息,请参阅通过控制台指定表选择和转换规则

或者,如果您有按照日期分区的大型分区表,您可以根据日期来迁移数据。例如,假设您有一个按月分区的表,并且只更新当前月份的数据。在此情况下,您可以为每个静态的每月分区创建一个完全加载任务,并为当前已更新的分区创建一个完全加载加 CDC 任务。

持续复制

Amazon DMS 提供数据的持续复制,确保源数据库与目标数据库的同步。它只复制有限数量的数据定义语言 (DDL) 语句。Amazon DMS不传播索引、用户、权限、存储过程和其他不直接关联到表数据的数据库更改等项目。

如果您计划使用正在进行的复制,请将多可用区选项创建复制实例时。通过选择多可用区之后,您可以获得复制实例的高可用性和故障转移支持。但是,此选项可能会影响性能,并且可能会影响性能,同时将更改应用到目标系统。

在升级源数据库或目标数据库之前,我们建议您停止任何Amazon DMS在这些数据库上运行的任务。升级完成后,继续执行任务。

在持续复制过程中,确定源数据库系统和Amazon DMS复制实例。确保网络在持续复制过程中不会导致任何瓶颈。

确定源数据库系统上每小时的更改速率和存档日志生成率也很重要。执行此操作可帮助您了解在持续复制过程中可能获得的吞吐量。

减少源数据库上的负载

Amazon DMS 使用源数据库上的一些资源。在完整加载任务期间,Amazon DMS 对并行处理的每个表执行源表的完整表扫描。此外,您在迁移中创建的每个任务会在 CDC 过程中查询源中的更改。要使 Amazon DMS 对一些源(例如 Oracle)执行 CDC,您可能需要增加写入到数据库更改日志中的数据量。

如果您发现对源数据库造成的负担过重,请减少迁移中的任务数或每个任务的表数量。每个任务独立获取源更改,因此整合任务可以减少更改捕获工作负载。

减少目标数据库上的瓶颈

迁移期间,请尽可能删除目标数据库上争用写入资源的任何进程:

  • 关闭不必要的触发器。

  • 在初始加载期间关闭二级索引,并在以后进行复制期间重新启用这些索引。

  • 使用 Amazon RDS 数据库,在切换之前,最好关闭备份和多可用区。

  • 迁移到非 RDS 系统时,最好关闭目标上的任何日志记录,直到切换。

在迁移过程中使用数据验证

为确保准确地将您的数据从源迁移到目标,我们强烈建议您使用数据验证。如果为任务启用数据验证,Amazon DMS在为表执行完全加载后,立即开始比较源和目标数据。

数据验证使用以下数据库,而 Amazon DMS 支持它们作为源终端节点和目标终端节点:

  • Oracle

  • PostgreSQL

  • MySQL

  • MariaDB

  • Microsoft SQL Server

  • Amazon Aurora MySQL-Compatible Edition

  • Amazon Aurora PostgreSQL-Compatible Edition

  • IBM Db2 LUW

有关更多信息,请参阅AmazonDMS 数据验证

监控Amazon DMS使用指标的任务

您有多个用于监视任务的指标的选项可以使用Amazon DMS控制台:

主机指标

您可以在CloudWatch 指标选项卡中的每个特定复制实例。在这里,您可以监控复制实例的大小是否适当。

复制任务指标

复制任务的指标,包括传入和已提交更改,以及复制主机与源/目标数据库之间的延迟,可以在CloudWatch 指标选项卡中的每个特定任务。

表衡量指标

您可以在表统计数据选项卡中的每个单独任务。这些指标包括以下数字:

  • 在满载期间加载的行。

  • 自任务启动以来插入、更新和删除。

  • 任务启动后的 DDL 操作。

有关指标监控的更多信息,请参阅监控AmazonDMS 任务.

事件和通知

Amazon DMS使用 Amazon SNS 提供通知Amazon DMS事件发生,例如,复制实例的创建或删除。您可以使用 Amazon SNS 支持的任何形式处理这些通知,用于Amazon区域。这些信息可以包括电子邮件、短信或对 HTTP 终端节点的调用。

有关更多信息,请参阅在 Amazon Database Migration Service 中使用事件和通知

使用任务日志以排除迁移问题

在某些情况下,Amazon DMS 会遇到一些仅在任务日志中显示警告或错误消息的问题。具体而言,数据截断问题或者外键违规造成的行拒绝仅会写入任务日志。因此,在迁移数据库时务必要查看任务日志。要查看任务日志,请在创建任务过程中配置 Amazon CloudWatch。

有关更多信息,请参阅 。使用 Amazon CloudWatch 监控复制任务.

更改 Oracle 目标的用户和架构

将 Oracle 作为目标时,Amazon DMS将数据迁移到目标终端节点的用户所拥有的架构。

例如,假设您正在迁移名为PERFDATA添加到 Oracle 目标终端节点,并且目标终端节点用户名为MASTER.Amazon DMS连接到 Oracle 目标MASTER并填充MASTER模式与数据库对象PERFDATA.

要覆盖此行为,请提供架构转换。例如,要迁移PERFDATA架构对象转换为PERFDATA方案,请使用以下转换。

{ "rule-type": "transformation", "rule-id": "2", "rule-name": "2", "object-locator": { "schema-name": "PERFDATA" }, "rule-target": "schema", "rule-action": "rename", "value": "PERFDATA" }

有关转换的更多信息,请参阅 使用 JSON 指定表选择和转换规则

更改 Oracle 目标的表和索引表空间

将 Oracle 作为目标时,Amazon DMS会将所有表和索引迁移到目标中的默认表空间。例如,假设您的源是 Oracle 之外的数据库引擎。所有目标表和索引都迁移到相同的默认表空间。

要覆盖此行为,请提供相应的表空间转换。例如,假设您要将表和索引迁移到 Oracle 目标中的表和索引表空间,这些表空间以源中的架构命名。在此情况下,您可以使用与下面类似的转换。在这里,源中的模式名为INVENTORY,目标中的相应表和索引表空间名为INVENTORYTBLINVENTORYIDX.

{ "rule-type": "transformation", "rule-id": "3", "rule-name": "3", "rule-action": "rename", "rule-target": "table-tablespace", "object-locator": { "schema-name": "INVENTORY", "table-name": "%", "table-tablespace-name": "%" }, "value": "INVENTORYTBL" }, { "rule-type": "transformation", "rule-id": "4 "rule-name": "4", "rule-action": "rename", "rule-target": "index-tablespace", "object-locator": { "schema-name": "INVENTORY", "table-name": "%", "index-tablespace-name": "%" }, "value": "INVENTORYIDX" }

有关转换的更多信息,请参阅 使用 JSON 指定表选择和转换规则

如果 Oracle 同时作为源和目标,则可以通过设置 Oracle 源额外连接属性来保留现有的表或索引表空间分配enableHomogenousTablespace=true. 有关更多信息,请参阅将 Oracle 作为 Amazon DMS 源时的额外连接属性

升级复制实例版本

Amazon定期发行Amazon DMS复制引擎软件以提供新功能和增强性能。每个版本的复制引擎软件具有自己的版本号。测试现有版本的Amazon DMS复制实例在您将复制实例升级到更高版本之前运行生产工作负载。有关可用版本升级的更多信息,请参阅AmazonDMS 发布说明.

了解迁移成本

Amazon Database Migration Service可帮助您将数据库迁移到Amazon以低成本轻松安全。您只需为复制实例和任何额外的日志存储付费。每个数据库迁移实例都包含足够的存储空间、复制日志以及大多数复制的数据缓存,入站数据传输是免费的。

在初始加载期间或加载高峰期间,您可能需要更多资源。您可以使用云监视指标密切监视复制实例资源利用率。然后,您可以根据使用情况向上扩展和缩小复制实例大小。

有关估算迁移成本的更多信息,请参阅: