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 DMSCPU 可能会占用大量 CPU,尤其是在执行异构迁移和复制时,例如从 Oracle 迁移至 PostgreSQL。针对这些情况,C4 实例是理想选择。

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

Amazon DMS支持 R5 和 C5 实例类

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

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

存储

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

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

多可用区

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

在满载期间使用单个可用区或多可用区复制实例时,发生故障转移或主机更换时,预计完全加载任务将失败。对于剩余未完成或处于错误状态的表,您可以从失败点重新启动任务。

并行加载多 parallel 表

默认情况下,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.

使用 parallel 完全加载

您可以根据分区和子分区使用 Oracle、微软 SQL Server、MySQL、Sybase 和 IBM Db2 LUW 源的 parallel 行加载。这样做可以缩短总体满载持续时间。此外,在运行Amazon DMS迁移任务,您可以加快大型或分区表的迁移速度。为此,请将表拆分为区段,然后在同一迁移任务中 parallel 加载区段。

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

  • partitions-auto

  • subpartitions-auto

  • partitions-list

  • ranges

  • none

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

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

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

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

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

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

你应该在直接转换之前启用触发器。

关闭备份和事务日志记录

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

使用多个任务

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

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

优化更改处理

默认情况下,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 解析程序架构

有关 Route 53 DNS 解析程序的更多信息,请参阅Route 53 Resolver 入门中的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 Resolver 入门中的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 模式时,Amazon DMS任务检查所有 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 万条记录。

要在控制台中应用行筛选:

  1. 打开 Amazon Web Services Management Console。

  2. 选择任务,然后创建新的任务。

  3. 选择表映射选项卡,然后展开选择规则.

  4. 选择添加新的选择规则. 现在可以使用小于或等于、大于或等于、等于或范围条件介于两个值之间添加列筛选。有关列筛选的更多信息,请参阅 从控制台指定表选择和转换规则.

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

如果您的表具有单列主键或唯一索引,则可以拥有Amazon DMS任务区段使用范围类型的 parallel 加载表来 parallel 加载数据。有关更多信息,请参阅 表和集合设置规则和操作

持续复制

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 兼容版

  • Amazon Aurora PostgreSQL-Compatible Edition

  • IBM Db2 LUW

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

监控Amazon DMS使用指标的任务

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

HOST 指标

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

复制任务指标

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

表指标

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

  • 在满载期间加载的行。

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

  • 自任务开始以来的 DDL 操作。

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

事件和通知

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

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

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

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

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

使用 Time Travel 对复制任务进行

排查问题Amazon DMS迁移问题,你可以使用 Time Travel。有关 Time Travel 的更多信息,请参阅时间旅行任务设置.

在使用 Time Travel 时,请注意以下注意事项:

  • 为避免 DMS 复制实例的开销,请仅对需要调试的任务启用 Time Travel。

  • 当您使用 Time Travel 对可能运行几天的复制任务进行故障排除时,请监控复制实例指标以了解资源开销。这种方法尤其适用于源数据库上长时间运行高事务负载的情况。有关更多信息,请参阅 监控AmazonDMS 任务

  • 时间旅行任务设置EnableRawData设置为true,DMS 复制期间的任务内存使用量可能高于时间旅行未开启时的使用量。如果长时间启用 Time Travel,请监控任务。

  • 目前,您只能在任务级别开启 Time Travel。对所有表格的更改都记录在 Time Travel 日志中。如果要对具有较大事务量的数据库中的特定表进行故障排除,请创建单独的任务。

更改 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以低成本轻松安全。您只需为复制实例和任何额外的日志存储付费。每个数据库迁移实例都包括足够用于交换空间的存储空间、复制日志和大多数复制的数据缓存,入站数据传输是免费的。

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

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