使用并AWSDMS使用AWSCLI和,将RDS适用于 Oracle RDS 的亚马逊迁移到适用于 Postgre SQL AWS SCT 的亚马逊 AWS CloudFormation - AWS Prescriptive Guidance

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

使用并AWSDMS使用AWSCLI和,将RDS适用于 Oracle RDS 的亚马逊迁移到适用于 Postgre SQL AWS SCT 的亚马逊 AWS CloudFormation

由 Pinesh Singal 创作 () AWS

环境:PoC 或试点

来源:Amazon f RDS or Oracle

目标:亚马逊 f or P RDS ostgre SQL

R 类型:重构

工作负载:Oracle;开源

技术:迁移;数据库

AWS服务:AWSDMS; AmazonRDS; AWS SCT

Summary

此模式显示如何使用AWS命令行界面 () 将适用于 Oracle 的多 TB 的亚马逊关系数据库服务 (AmazonRDS) 数据库实例迁移到 Amazon RDS for Postgre SQL 数据库实例。AWS CLI该方法可最大限度地减少停机时间,并且不需要登录AWS管理控制台。

这种模式有助于通过使用 AWS Schema Conversion Tool (AWSSCT) 和 Dat AWS abase Migration Service (AWSDMS) 控制台来避免手动配置和单独迁移。该解决方案为多个数据库设置一次性配置,并使用AWSSCT和AWSDMS执行迁移。AWS CLI

该模式RDS用于AWSSCT将数据库架构对象从 Amazon for Oracle 转换为 Amazon RDS for Postgre,SQL然后使用它AWSDMS来迁移数据。使用中的 Python 脚本 AWSCLI,您可以使用AWS CloudFormation 模板创建AWSSCT对象和AWSDMS任务。

先决条件和限制

先决条件

  • 一个活动的 AWS 账户。

  • 现有的 Amazon f RDS or Oracle 数据库实例。

  • 现有的 Amazon f RDS or Postgre SQL 数据库实例。 

  • 装有 Windows 或 Linux 操作系统的亚马逊EC2实例或本地计算机,用于运行脚本。

  • 了解以下AWSDMS迁移任务类型:full-loadcdcfull-load-and-cdc。 有关更多信息,请参阅AWSDMS文档中的创建任务。 

  • AWSSCT,安装并配置了适用于 Oracle 和 Postgre 数据库引擎的 Java SQL 数据库连接 (JDBC) 驱动程序。有关更多信息,请参阅AWSSCT文档中的安装AWSSCT和安装所需的数据库驱动程序。 

  • 已安装AWSSCT文件夹中的AWSSchemaConversionToolBatch.jar文件已复制到您的工作目录。

  • cli-sct-dms-cft.zip 文件(附后),已下载并解压缩到您的工作目录中。

  • 最新的AWSDMS复制实例引擎版本。有关更多信息,请参阅 Su AWS pport 文档中的如何创建AWSDMS复制实例和文档中的 AWSDMS3.4.4 发行说明。AWS DMS 

  • AWSCLI版本 2,安装并配置了您的访问密钥 ID、私有访问密钥,以及运行脚本的亚马逊弹性计算云 (AmazonEC2) 实例或操作系统 (OS) 的默认AWS区域名称。有关更多信息,请参阅AWSCLI文档AWSCLI中的安装、更新和卸载AWSCLI版本 2配置。 

  • 熟悉AWS CloudFormation 模板。有关更多信息,请参阅AWS CloudFormation 文档中的AWS CloudFormation 概念。 

  • Python 版本 3,在运行脚本的 Amazon EC2 实例或操作系统上安装和配置。有关更多信息,请参阅 Python 文档。 

限制

  • 您的源 Amazon RDS for Oracle 数据库实例的最低要求是: 

    • 适用于企业版、标准版、标准一版和标准二版的 Oracle 版本 12c (v12.1.0.2、v12.2.0.1)、18c (v18.0.0.0)和 19c (v19.0.0.0)。

    • 尽管亚马逊RDS支持 Oracle 18c (v18.0.0.0),但此版本已处于弃用状态,因为在该日期之后,甲骨文不再提供 18c 的补丁。 end-of-support有关更多信息,请参阅亚马逊RDS文档RDS中的 Oracle on Amazon。

    • 不再支持RDS适用于 Oracle 的 Amazon 11g。

  • 您的目标 Amazon RDS for Postgre SQL 数据库实例的最低要求是: 

    • Postgre SQL 版本 9(版本 9.5 和 9.6)、10.x、11.x、12.x 和 13.x

产品版本

  • RDS适用于 Oracle 数据库实例的 Amazon 版本 12.1.0.2 及更高版本

  • RDS适用于 Postgre SQL 数据库实例版本 11.5 及更高版本的亚马逊

  • AWSCLI第 2 版 

  • 最新版本的 AWS SCT

  • Python 3 的最新版本。

架构

源技术堆栈

  • RDS适用于甲骨文的亚马逊

目标技术堆栈

  • 适用于 Post RDS gre 的亚马逊 SQL

源架构和目标架构

下图显示了使用AWSDMS和 Python 脚本将 Amazon RDS for Oracle 数据库实例迁移到 Amazon RDS for Postgre SQL 数据库实例的情况。

使用和 Python 将 Oracle 数据库实例迁移RDS到 RDS Postgre SQL AWS DMS 数据库实例。

图表显示了以下迁移工作流:

  1. Python 脚本AWSSCT用于连接源数据库实例和目标数据库实例。

  2. 用户从 Python 脚本AWSSCT开始,将 Oracle 代码转换为 Postgre SQL 代码,然后在目标数据库实例上运行该代码。

  3. Python 脚本为源数据库实例和目标数据库实例创建AWSDMS复制任务。

  4. 用户部署 Python 脚本来启动AWSDMS任务,然后在数据迁移完成后停止任务。

自动化和扩缩

您可以通过在 Python 脚本中为单个程序的多个功能添加其他参数,和与安全相关的更改,来自动执行此迁移。 

工具

  • AWSCommand Line Interface (AWSCLI) 是一个开源工具,可帮助您通过命令行外壳中的命令与AWS服务进行交互。

  • AWS CloudFormation帮助您设置AWS资源,快速一致地配置资源,并在各个AWS账户和地区的整个生命周期中对其进行管理。此模式使用 Python 脚本将 .csv 输入文件转换为 .json 输入文件。.json 文件用于AWSCLI命令创建AWS CloudFormation 堆栈,该堆栈使用 Amazon 资源名称 (ARNs)、迁移类型、任务设置和表映射创建多个AWSDMS复制任务。

  • AWSDat@@ abase Migration Service (AWSDMS) 可帮助您将数据存储迁移到AWS云端,或者在云端和本地设置的组合之间迁移。此模式使用AWSDMS在命令行上运行的 Python 脚本创建、启动和停止任务并创建模板。AWS CloudFormation

  • AWSSchema Conversion Tool (AWSSCT) 通过自动将源数据库架构和大部分自定义代码转换为与目标数据库兼容的格式来支持异构数据库迁移。此模式需要已安装AWSSCT目录中的AWSSchemaConversionToolBatch.jar文件。

代码

cli-sct-dms-cft.zip 文件(附后)包含此模式的完整源代码。

操作说明

任务描述所需技能

配置AWSSCT为从中运行AWSCLI。

1. 使用以下格式在 database_migration.txt 文件中配置源环境和目标环境配置的详细信息:

#source_vendor,source_hostname,source_dbname,source_user,source_pwd,source_schema,source_port,source_sid,target_vendor,target_hostname,target_user,target_pwd,target_dbname,target_port ORACLE,myoracledb.cokmvis0v46q.us-east-1.rds.amazonaws.com,ORCL,orcl,orcl1234,orcl,1521,ORCL,POSTGRESQL,mypgdbinstance.cokmvis0v46q.us-east-1.rds.amazonaws.com,pguser,pgpassword,pgdb,5432

2. 根据您的要求在以下文件中修改AWSSCT配置参数:project_settings.xmlOracle_PG_Test_Batch.xml、和ORACLE-orcl-to-POSTGRESQL.xml

DBA

运行 run_aws_sct.py Python 脚本。

使用以下命令运行 run_aws_sct.py Python 脚本:

$ python run_aws_sct.py database_migration.txt

Python 脚本将数据库对象从 Oracle 转换为 Postgre SQL 并创建 Postg SQL re SQL 格式的文件。该脚本还会创建 Database migration assessment report.pdf 文件,该文件为您提供数据库对象的详细建议和转换统计信息。

DBA

在亚马逊中RDS为 Postgre SQL 创建对象。

  1. 如果需要,可以手动修改AWSSCT生成的SQL文件。

  2. 运行SQL文件并在您的 Amazon RDS for Postgre SQL 数据库实例中创建对象。

DBA
任务描述所需技能

创建AWSDMS复制实例。

登录AWS管理控制台,打开AWSDMS控制台,然后创建根据您的要求配置的复制实例。

有关更多信息,请参阅文档中的创建复制实例和 Su AWS pport AWS DMS 文档中的如何创建AWSDMS复制实例

DBA

创建源端点。

在AWSDMS控制台上,选择终端节点,然后根据需要为 Oracle 数据库创建源端点。 

注意:额外的连接属性必须为带有 -2 值的 numberDataTypeScale

有关更多信息,请参阅AWSDMS文档中的创建源端点和目标端点

 

DBA

创建目标端点。

在AWSDMS控制台上,选择终端节点,然后根据需要为 Postgre SQL 数据库创建目标端点。 

有关更多信息,请参阅AWSDMS文档中的创建源端点和目标端点

DevOps 工程师

将AWSDMS复制详细信息配置为从中运行AWSCLI。

使用以下格式使用AWSDMS源终端节点ARN、目标终端节点和复制实例ARN在dms-arn-list.txt文件中配置源端点和目标终端节点ARN以及复制详细信息:

#sourceARN,targetARN,repARN arn:aws:dms:us-east-1:123456789012:endpoint:EH7AINRUDZ5GOYIY6HVMXECMCQ arn:aws:dms:us-east-1:123456789012:endpoint:HHJVUV57N7O3CQF4PJZKGIOYY5 arn:aws:dms:us-east-1:123456789012:rep:LL57N77AQQAHHJF4PJFHNEDZ5G
DBA

运行 dms-create-task .py Python 脚本来创建AWSDMS任务。

1. 使用以下命令运行 dms-create-task.py Python 脚本:

$ python dms-create-task.py database_migration.txt dms-arn-list.txt <cft-stack-name> <migration-type>

  • database_migration.txt 是数据库迁移文本文件

  • dms-arn-list.txt是的ARN清单 AWS DMS

  • <cft-stack-name>是用户定义的AWS CloudFormation 堆栈名称

  • <migration-type>是迁移类型(满载、cd cfull-load-and-cdc

2. 根据您的迁移类型,您可以使用以下命令创建三种类型的AWSDMS任务:

  • $ python dms-create-task.py database_migration.txt dms-arn-list.txt dms-cli-cft-stack full-load

  • $ python dms-create-task.py database_migration.txt dms-arn-list.txt dms-cli-cft-stack cdc

  • $ python dms-create-task.py database_migration.txt dms-arn-list.txt dms-cli-cft-stack full-load-and-cdc

3. AWS CloudFormation 堆栈和AWSDMS任务已创建 

 

DBA

检查AWSDMS任务是否准备就绪。

在AWS控制台的 “Ready状态” 部分中,检查您的AWSDMS任务是否处于状态

DBA
任务描述所需技能

开始AWSDMS任务。

使用以下命令运行 dms-start-task.py Python 脚本:

$ python dms-start-task.py start ‘<cdc-start-datetime>’

注意:开始日期和时间必须采用 'DD-MON-YYYY''YYYY-MM-DDTHH:MI:SS' 时间戳数据类型格式(例如 ‘01-Dec-2019’‘2018-03-08T12:12:12’

您可以在AWSDMS控制台AWSDMS任务页面的迁移任务的 “表统计” 选项卡中查看任务状态。

DBA

验证数据。

  1. 满载迁移完成后,任务将持续运行,以实现持续的数据更改(CDC)。

  2. 完成或无需迁移更多更改后CDC,请查看并验证 Oracle 和 Postgre SQL 数据库中的迁移任务结果和数据。

  3. 您可以通过在AWSDMS控制台任务页面的数据库迁移任务的表统计选项卡中检查状态和计数列(Validation stateValidation suspended、、、和Validation details)来验证数据。Validation pending Validation failed 

有关更多信息,请参阅AWSDMS文档中的AWSDMS数据验证

DBA

停止AWSDMS任务。

使用以下命令运行 Python 脚本:

$ python dms-start-task.py stop

注意:AWSDMS任务可能会以failed状态停止,具体取决于验证状态。有关更多信息,请参阅其他信息部分中的故障排除表。

DBA

故障排除

问题解决方案

AWSSCT源测试和目标测试连接失败

配置JDBC驱动程序版本和VPC安全组入站规则以接受传入流量。

源端点或者目标端点测试运行失败

检查端点设置和复制实例是否处于 Available 状 态。检查端点连接状态是否为 Successful。 

有关更多信息,请参阅 Support 文档中的如何解决AWSDMS端点连接故障。AWS

满载运行失败

检查源数据库和目标数据库是否具有匹配的数据类型与大小。 

有关更多信息,请参阅AWSDMS文档AWSDMS中的迁移任务疑难解答

验证运行错误

检查该表是否有主键,因为非主键表未经验证。

如果表有主键和错误,请检查源端点中的额外连接属性是否有 numberDataTypeScale=-2

有关更多信息,请参阅AWSDMS文档中的 “使用 Oracle 作为来源时的额外连接属性” 和 “疑难解答”。AWS DMS OracleSettings

相关资源

附件

要访问与此文档相关联的其他内容,请解压以下文件:attachment.zip