使用以下方法将RDS适用于 Oracle RDS 的亚马逊迁移到 Postg SQL re SSL 模式下的亚马逊 AWS DMS - AWS Prescriptive Guidance

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

使用以下方法将RDS适用于 Oracle RDS 的亚马逊迁移到 Postg SQL re SSL 模式下的亚马逊 AWS DMS

由 Pinesh Singal 创作 () AWS

摘要

此模式为将适用于 Oracle 的亚马逊关系数据库服务 (AmazonRDS) 数据库实例迁移到亚马逊RDS网络服务 (AWS) 云上的 Amazon for Postgre SQL 数据库提供了指导。为了加密数据库之间的连接,该模式使用了 Amazon 和 Dat AWS abase Migration Service () 中的证书颁发机构 (CA AWSDMS) RDS 和SSL模式。

该模式描述了一种在线迁移策略,对于具有大量事务的多 TB Oracle 源数据库,停机时间很少或没有停机时间。为了数据安全,该模式SSL在传输数据时使用。

此AWS模式使用 Schema Conversion Tool (AWSSCT) 将 Amazon RDS for Oracle 数据库架构转换为 Amazon RDS for Postgre 架SQL构。然后,该模式RDS用于AWSDMS将数据从 Amazon for Oracle 数据库迁移到 Amazon RDS for Postgre SQL 数据库。

先决条件和限制

先决条件

  • 一个活跃的AWS账户 

  • 仅使用 rds-ca-rsa2048-g1 配置的亚马逊RDS数据库证书颁发机构 (CA)

    • rds-ca-2019 证书定于 2024 年 8 月到期

    • rds-ca-2015 证书已于 2020 年 3 月 5 日到期

  • AWS SCT

  • AWS DMS

  • pgAdmin

  • SQL工具(例如,SQL开发者或 SQL *Plus)

限制

  • Amazon RDS for Oracle 数据库 — 最低要求是 Oracle 19c 版本的企业版和标准二版。

  • Amazon RDS for Postgre SQL 数据库 — 最低要求是 Postgre SQL 版本 12 及更高版本(9.x 及更高版本)。

产品版本

  • Amazon RDS for Oracle 数据库版本 12.1.0.2 实例

  • Amazon RDS for Postgre SQL 数据库版本 11.5 实例

架构

源技术堆栈

  • 版本为 12.1.0.2.v18 RDS 的 Amazon for Oracle 数据库实例。

目标技术堆栈

  • AWS DMS

  • 版本 11.5 RDS 的 Amazon for Postgre SQL 数据库实例。

目标架构

下图显示了 Oracle(源)和 PostgreSQL(目标)数据库之间的数据迁移架构。该架构包括以下内容:

  • 虚拟私有云 (VPC)

  • 可用区

  • 私有子网

  • Amazon f RDS or Oracle 数据库

  • AWSDMS复制实例

  • 一个RDS适用于 Postgre 的数据库 SQL

要加密源数据库和目标数据库的连接,必须在 Amazon 和中启用 CA RDS 和SSL模式AWSDMS。

数据在 Oracle 和 P RDS ostgre 之间移动 AWSDMS,在 Postg SQL re AWS DMS 之间RDS移动。

工具

AWS 服务

其他服务

  • pgAdmin是一款适用于 Postgre SQL 的开源管理工具。它提供了一个图形界面,可帮助您创建、维护和使用数据库对象。

最佳实践

Amazon RDS 提供新的 CA 证书作为AWS安全最佳实践。有关新证书和支持的AWS区域的信息,请参阅使用 SSL /加密TLS与数据库实例或集群的连接

如果您的RDS实例当前使用的是 CA 证书rds-ca-2019,并且您想升级到rds-ca-rsa2048-g1,请按照通过修改数据库实例或集群更新 CA 证书或通过应用维护来更新 CA 证书中的说明进行操作。

操作说明

任务描述所需技能

创建 Oracle 数据库实例。

登录您的AWS账户,打开AWS管理控制台,然后导航至 Amazon RDS 控制台。在控制台上,选择创建数据库,然后选择 Oracle

将军AWS,DBA

配置安全组。

配置入站和出站安全组。

将军 AWS

创建选项组。

在与 Amazon RDS for Oracle 数据库相同的VPC安全组中创建选项组。在 “选项” 中,选择SSL。对于端口,选择 2484(用于SSL连接)。

将军 AWS

配置选项设置。

使用以下设置:

  • SQLNET.CIPHER_SUITE: SSL_RSA_WITH_AES_256_CBC_SHA

  • SQLNET.SSL_VERSION: 1.2 or 1.0

将军 AWS

修改RDS适用于 Oracle 数据库实例的。

将 CA 证书设置为 rds-ca-rsa2048-g1

选项组下,附加之前创建的选项组。

DBA,一般 AWS

确认RDS适用于 Oracle 的数据库实例是否可用。

确保 Amazon f RDS or Oracle 数据库实例已启动并正在运行,并且数据库架构可以访问。

要连接到 RDS Oracle 数据库,请使用sqlplus命令行中的命令。

$ sqlplus orcl/****@myoracledb.cokmvis0v46q.us-east-1.rds.amazonaws.com:1521/ORCL SQL*Plus: Release 12.1.0.2.0 Production on Tue Oct 15 18:11:07 2019 Copyright (c) 1982, 2016, Oracle. All rights reserved. Last Successful login time: Mon Dec 16 2019 23:17:31 +05:30 Connected to: Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options SQL>
DBA

在 For Oracle 数据库中RDS创建对象和数据。

创建对象并在架构中插入数据。

DBA
任务描述所需技能

RDS为 Postgre 创建SQL数据库。

在亚马逊RDS控制台的 “创建数据库” 页面上,选择 Postgre SQL 以创建 Amazon RDS for Postgre SQL 数据库实例。

DBA,一般 AWS

配置安全组。

配置入站和出站安全组。

将军 AWS

创建参数组。

如果您使用的是 Postgre SQL 版本 11.x,请创建一个参数组来设置SSL参数。在 Postgre SQL 版本 12 中,SSL参数组默认处于启用状态。

将军 AWS

编辑参数。

rds.force_ssl 参数更改为 1 (on)。

默认情况下,ssl 参数设置为 1 (on)。通过将rds.force_ssl参数设置为1,可以强制所有连接仅通过SSL模式进行连接。

将军 AWS

修改 P RDS ostgre SQL 数据库实例的。

将 CA 证书设置为 rds-ca-rsa2048-g1

根据您的 Postgre SQL 版本,附加默认参数组或先前创建的参数组。

DBA,一般 AWS

确认RDS适用于 Postgre 的SQL数据库实例是否可用。

确保 Amazon for P RDS ostgre SQL 数据库已启动并正在运行。

psql命令通过命令行与 s sslmode et 建立SSL连接。

一种选择是在参数组中设置 sslmode=1 并使用 psql 连接,而不在命令中包含 sslmode 参数。

以下输出显示SSL连接已建立。

$ psql -h mypgdbinstance.cokmvis0v46q.us-east-1.rds.amazonaws.com -p 5432 "dbname=pgdb user=pguser" Password for user pguser: psql (11.3, server 11.5) SSL connection (protocol: TLSv1.2, cipher: ECDHE-RSA-AES256-GCM-SHA384, bits: 256, compression: off) Type "help" for help. pgdb=>

第二个选项是在参数组中设置 sslmode=1,并在 psql 命令中包含 sslmode 参数。

以下输出显示SSL连接已建立。

$ psql -h mypgdbinstance.cokmvis0v46q.us-east-1.rds.amazonaws.com -p 5432 "dbname=pgdb user=pguser sslmode=require" Password for user pguser: psql (11.3, server 11.5) SSL connection (protocol: TLSv1.2, cipher: ECDHE-RSA-AES256-GCM-SHA384, bits: 256, compression: off) Type "help" for help. pgdb=>
DBA
任务描述所需技能

安装AWSSCT。

安装最新版本的AWSSCT应用程序。

将军 AWS

AWSSCT使用JDBC驱动程序进行配置。

下载适用于 Oracle (ojdbc8.jarJDBC) 和 Postgre (p ostg resql-42.2.5.jar) 的 Java 数据库连接 SQL () 驱动程序。

要在中配置驱动程序 AWSSCT,请选择设置全局设置驱动程序

将军 AWS

创建AWSSCT项目。

使用 Oracle 作为源数据库引擎,使用 Amazon RDS for Postgre SQL 作为目标数据库引擎,创建AWSSCT项目和报告:

  1. 通过提供连接详细信息,测试与源 Oracle 数据库和目标 Amazon RDS for Postgre SQL 数据库的连接。

    对于源 Oracle 数据库,需要以下权限或特权:

    • CONNECT

    • SELECT_CATALOG_ROLE

    • SELECT ANY DICTIONARY

    • SELECT on SYS.USER$ TO <sct_user>

    有关更多信息,请参阅使用 Oracle 数据库作为来源AWSSCT

    源连接和目标连接都必须成功AWSSCT才能启动迁移报告。

  2. 报告后,输入要转换的架构,然后选择完成

将军 AWS

验证数据库对象。

  1. 选择 加载架构

    AWSSCT显示源对象和转换后的目标对象,包括出错的对象。更新目标数据库上任何不正确的对象。

  2. 查看错误,然后使用手动干预将其清除。

  3. 清除所有错误后,再次选择加载架构

  4. 选择应用于数据库

  5. 连接到pgAdmin或任何支持 Postgre SQL 数据库连接的工具,然后检查架构和对象。

DBA,一般 AWS
任务描述所需技能

创建复制实例。

  1. 登录您的账户,打开AWS管理控制台,然后导航到AWSDMS控制台。

  2. 创建具有有效设置VPC、安全组、可用区和额外连接属性的复制实例。

将军 AWS

导入凭证。

下载您所在AWS地区的证书包 (PEM)

该捆绑包中包含 rds-ca-2019 中间证书和根证书。该捆绑包还包含 rds-ca-rsa2048-g1rds-ca-rsa4096-g1rds-ca-ecc384-g1 根 CA 证书。您的应用程序信任存储仅需要注册根 CA 证书。

将军 AWS

创建源端点。

  1. 选择 “选择数据库实例”,然后选择您创建的 Oracle RDS 数据库实例,从而为 Amazon RDS fo RDS r Oracle 创建源终端节点。端点配置详细信息将自动填充。

  2. 选择手动提供访问信息。对于端口,请确保输入 2484

  3. Secure Socket Layer (SSL) 模式verify-ca,选择,然后选择您之前创建的 CA 证书。

  4. 端点设置下,添加额外的连接属性NumberDataTypeScale=-2以支持无大小的 NUMBER数据类型。

有关更多信息,请参阅使用 Oracle 数据库作为AWS数据库迁移服务的来源

将军 AWS

创建目标端点。

  1. 选择 “选择数据库实例”,然后为 Postgre RDS数据库实例选择你SQLRDS的,为 Amazon RDS for Postgre SQL 创建目标终端节点。端点配置详细信息将自动填充。

  2. 选择手动提供访问信息。对于端口,请确保输入 2484

有关更多信息,请参阅使用 Postgre SQL 数据库作为AWS数据库迁移服务的目标

将军 AWS

测试端点。

  1. 测试源端点和目标端点以确认两者均成功且可用。

  2. 如果测试失败,请确保安全组入站规则有效。

将军 AWS

创建迁移任务。

要创建用于满载和更改数据捕获 (CDC) 或数据验证的迁移任务,请执行以下操作:

  1. 要创建数据库迁移任务,请选择复制实例、源数据库端点、目标数据库端点。将迁移类型指定为以下类型之一:

    • 迁移现有数据(满载)

    • 仅复制数据更改 (CDC)

    • 迁移现有数据并复制正在进行的更改(满载和CDC)

  2. 在 “表映射” 下,您可以JSON采用GUI或格式配置选择规则和转换规则:

    • 选择规则下,选择架构,输入表名,然后选择要配置的操作(包括或排除);例如,架构ORCL、表名%、“操作包括”。

    • 转换规则下,执行下列操作之一:

      • 选择架构并选择操作(大小写、前缀、后缀);例如,目标架构ORCL、操作设为小写。

      • 选择架构,输入表名,然后选择操作(大小写、前缀、后缀);例如,目标架构ORCL、表%、Action Make 小写。

  3. 打开 Amazon CloudWatch 日志监控。

  4. 对于映射规则,请添加以下JSON代码。

    { "rules": [ { "rule-type": "transformation", "rule-id": "1", "rule-name": "1", "rule-target": "table", "object-locator": { "schema-name": "%", "table-name": "%" }, "rule-action": "convert-lowercase", "value": null, "old-value": null }, { "rule-type": "transformation", "rule-id": "2", "rule-name": "2", "rule-target": "schema", "object-locator": { "schema-name": "ORCL", "table-name": "%" }, "rule-action": "convert-lowercase", "value": null, "old-value": null }, { "rule-type": "selection", "rule-id": "3", "rule-name": "3", "object-locator": { "schema-name": "ORCL", "table-name": "DEPT" }, "rule-action": "include", "filters": [] } ] }
将军 AWS

计划生产运行。

与利益相关者(例如应用程序所有者)确认停机时间,以便AWSDMS在生产系统中运行。

迁移主管

运行迁移任务。

  1. 启动状态为 “就绪” 的AWSDMS任务,并监控 Amazon CloudWatch 中的迁移任务日志中是否存在任何错误。

    如果您选择 “迁移现有数据并复制正在进行的更改” 作为迁移类型,并且状态为 “加载完成正在进行复制”,则CDC数据迁移的全部负载已完成,验证正在进行中。

  2. 开始迁移后,可以在中获取其他 SSL-connection信息。 CloudWatch对于 Oracle, CloudWatch 显示以下连接字符串。

    2019-12-17T09:15:11 [SOURCE_UNLOAD ]I: Connecting to Oracle: Beginning session (oracle_endpoint_conn.c:834)

    Postgre SQL 连接字符串将与以下示例类似。

    2019-12-17T09:15:11 [TARGET_LOAD ]I: Going to connect to ODBC connection string: PROTOCOL=7.4-0;DRIVER={PostgreSQL};SERVER=mypgdbinstance.cokmvis0v46q.us-east-1.rds.amazonaws.com;DATABASE=pgdb;PORT=5432;sslmode=require;UID=pguser; (odbc_endpoint_imp.c:2218)

将军 AWS

验证数据。

查看源 Oracle 和目标 Postgre SQL 数据库中的迁移任务结果和数据:

  1. 使用架构连接 pgAdmin 并检查您的 Postgre SQL 数据库ORCL中的数据。

  2. 对于CDC,通过在源 Oracle 数据库中插入或更新数据来检查正在进行的更改。

DBA

停止迁移任务。

成功完成数据验证后,停止迁移任务。

将军 AWS
任务描述所需技能

删除AWSDMS任务。

  1. 在AWSDMS控制台上,导航到数据库迁移任务,然后停止任何正在进行或正在运行的AWSDMS任务。

  2. 选择一个或多个任务,选择操作,然后选择删除

将军 AWS

删除AWSDMS端点。

选择您创建的源端点和目标端点,选择操作,然后选择删除

将军 AWS

删除AWSDMS复制实例。

选择复制实例,选择操作,然后选择删除

将军 AWS

删除 Postgre SQL 数据库。

  1. 在 Amazon RDS 控制台上,选择数据库

  2. 选择您创建的 Postgre SQL 数据库实例,选择操作,然后选择删除

将军 AWS

删除 Oracle 数据库。

在 Amazon RDS 控制台上,选择 Oracle 数据库实例,选择操作,然后选择删除

将军 AWS

故障排除

事务解决方案

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

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

Oracle 源端点测试运行失败。

检查端点设置以及复制实例是否可用。

AWSDMS任务满载运行失败。

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

AWSDMS验证迁移任务会返回错误。

  1. 检查表是否有主键。没有主键的表不会被验证。

  2. 如果表具有主键但返回错误,请检查源端点中的额外连接属性。额外的连接属性必须具有 numberDataTypeScale=-2 才能支持 NUMBER 数据类型,并且不会根据表中可用的数据动态调整大小。

相关资源

数据库

SSL数据库连接

AWS SCT

AWS DMS

其他信息

亚马逊RDS证书颁发机构证书 rds-ca-201 9 将于 2024 年 8 月到期。如果您使用或计划使用SSL或TLS通过证书验证连接到RDS数据库实例或多可用区数据库集群,请考虑使用新的 CA 证书之一:rds-ca-rsa2048-g1rds-ca-rsa4096-g1、或rds-ca-ecc384-g1