如何从 Oracle 迁移至 Amazon Aurora

简介

在本课程中,您将学习如何使用 Amazon Aurora 将旧有的 Oracle 数据库迁移至云原生的数据库。 首先,创建一个 Oracle 数据库并为其加载样本数据。 之后在 Aurora 中创建一个数据库,使用 AWS DMS 对 Oracle 数据库中的数据进行迁移。 最后,您将掌握如何使用 Aurora,将旧有的数据库迁移至云原生的数据库。

时长:30— 45 分钟

为何使用 Aurora ?

Aurora 是亚马逊云科技推出的一种全托管型关系型数据库。 其引擎可兼容 MySQL 和 PostgreSQL,专为云环境而打造,可提升服务性能。 与旧有数据库相比,Aurora 的性能更快、可用性更强。

利用 Aurora,您可以将数据库运营托管给亚马逊云科技,您的团队也能将更多精力投入到为用户进行创新之中。 Aurora 可为您处理集群扩容、实例故障转移、数据备份和软件升级。 得益于亚马逊云科技的高效云服务,您能够使用速度更快、价格更低、可靠性更强的数据库服务。

课程内容

通过本课程,您将了解如何使用 Aurora 将旧有的 Oracle 数据库迁移至全面托管的云原生数据库。 本次课程共包含 8 个模块。

  • 在本模块中,您将在 Amazon RDS 中创建 Oracle 数据库。 它将作为源数据库,从而利用 Aurora迁移至云原生数据库。


    首先,请打开 Amazon RDS 控制台。 在主页点击创建数据库可创建一个新的数据库。

    (click to zoom)

    这将启动数据库创建向导。 在引擎选项引擎类型一栏里,选择 Oracle。 然后,选择 Oracle Standard Edition Two 并使用默认版本。 您无需使用自己的 Oracle 许可证,只需开启许可证中的包含许可证选项。

    (click to zoom)

    数据库创建向导会为您提供模板,以简化 Amazon RDS 数据库的配置。 鉴于该数据库仅用于教学演示,您可以选择开发/测试设置。

    (click to zoom)

    设置页面,为您的数据库命名并设置主用户名及密码。 请务必将这些内容记录下来,因为您在连接到数据库和创建其他用户时都需要它们。

    (click to zoom)

    接下来,选择数据库实例大小。 选择 Burstable 类,再选择 db.t3.small 实例类。

    (click to zoom)

    然后,为您的 Amazon RDS 数据库设置存储选项。 您可以选择默认的 20 GiB 通用型 (SSD) 存储。

    (click to zoom)

    Amazon RDS 数据库创建向导的下一个步骤是设置连接。 您必须指定数据库所在的 Amazon Virtual Private Cloud (Amazon VPC)以及数据库实例的子网和安全组。

    您可以选择亚马逊云科技账户中的默认 VPC 。 在其他连接配置部分,在公共访问选项里选择启用,这样您就可以从自己的计算机连接数据库。 接下来选择创建新的 VPC 安全组并为其命名。

    (click to zoom)

    您还可以调整其他配置,包括备份、监控、维护和自动升级设置。 本课程的迁移示例只使用默认设置。

    点击创建数据库完成数据库创建。

    (click to zoom)

    在 Amazon RDS 为您准备基础设施及初始化您的数据库期间,您的数据库状态会显示为正在创建

    数据库准备完成后,状态会变为可用

    (click to zoom)
    (click to zoom)

    数据库标识栏中点击您的数据库名称即可查看数据库详细信息。 此处详细信息中列出了端点属性。 将该值保存下来,以便在之后的模块中连接至您的数据库时使用。

    (click to zoom)

    在本模块中,您创建了一个 Oracle 数据库,借助 Aurora ,您可以将其迁移至云原生的关系型数据库。 在下一模块中,您将为 Oracle 数据库加载样本数据,并为数据做好迁移至 Aurora 的准备。

  • 在本模块中,您将为 Oracle 数据库加载样本数据,并为数据做好迁移至 Aurora 的准备。

    亚马逊云科技为您提供了样本数据库模式,可用于测试 AWS DMS。 在本次课程中,您可以使用任一样本数据库。 点击下载 zip 文件,获取样本数据库。

    在本次课程中,请使用 AWS 数据库迁移服务示例库中的体育票务应用示例。 该应用的路径位于您下载的 .zip 压缩包文件的 oracle/sampledb/v1下。 解压缩后,切换至您的终端目录 oracle/sampledb/v1

    您还需要安装 SQL *Plus 实例客户端来连接 Oracle 数据库。 请参考说明安装 SQL*Plus 实例客户端。 如果您使用的是 OS X,最简单的方法是使用 Homebrew 安装 SQL*Plus


    SQL *Plus 安装完成后,请在终端中输入以下命令来连接 Oracle 数据库。

    sqlplus <username>/<password>/@<endpoint>/ORCL

    请将<username><password>替换为您在 Amazon RDS 数据库创建向导中配置的用户名和密码。 请将<endpoint>替换为您在 Amazon RDS 控制台中的 Oracle 数据库端点。

    连接成功后,您的终端会显示 Oracle 数据库的连接状态,具体如图所示。

    (click to zoom)

    install-rds.sql 文件可创建体育票务样本数据库并载入数据。 执行 install-rds.sql 文件并准备数据库时,请在 SQL *Plus 中执行如下命令。

              @install-rds.sql

    如果出现“SQL *Plus 无法打开某个文件”的错误提示,可能是由于未能从正确的路径启动 SQL *Plus. 请退出 SQL *Plus,切换至您下载的 .zip 压缩文件路径 oracle/sampledb/v1,并重新连接到 SQL *Plus。

    执行命令后,开始执行脚本。 脚本命令将在终端中输出显示。 脚本可能最多需要45分钟才能执行完毕。

    执行脚本后,请确保数据已正确载入。

    首先,在 SQL *Plus中执行以下查询,以查看通过脚本创建的表。

    SELECT table_name, owner FROM all_tables WHERE owner = 'DMS_SAMPLE';

    结果中应包含 16 张表,包括 MLB_DATA, NAME_DATANFL_DATA

    (click to zoom)

    接下来,请使用计数功能,确保表格为分行显示。 您可以执行以下命令,对 PERSON 表的全部记录进行计数。

                 SELECT count(*) FROM person;

    结果如图所示,即 PERSON 表中有 7055276 条记录。

    (click to zoom)

    最后,执行如下命令来查看通过脚本配置的数据库触发器。

                 SELECT trigger_name, trigger_type FROM sys.all_triggers WHERE owner = 'DMS_SAMPLE';

    可以看到,您的数据库中有三种触发器。

    (click to zoom)

    您已通过脚本创建了表并载入了记录。 您还使用了 Oracle 的触发器和视图等高级功能。 这些触发器和视图会增加迁移的难度。 幸运的是, AWS SCT 对这一步进行了自动化处理。在本次课程中,您可以在未来的模块中使用 AWS SCT。

    在本模块中,您已将用于迁移的样本数据载入到了 Oracle 数据库中。 加载数据后,您通过几次 SQL 查询查看了数据库中创建的数据和对象。

    在下个模块中,您将创建迁移所需的 Aurora 目标数据库。

  • 在本模块中,您将创建一个 Aurora 数据库,作为您从旧有数据库迁移的目标数据库。 Aurora 是一种云原生的关系型数据库,与旧有数据库相比,它具备无与伦比的高性能和可用性。 它能完全兼容 MySQL 和 PostgreSQL。 在本模块中,您将使用兼容 PostgreSQL 版本的 Aurora。


    首先,请进入 Amazon RDS 控制台。 您可以看到在之前的模块中创建的 Oracle 数据库。 选择创建数据库

    (click to zoom)

    启动数据库创建向导。 在引擎选择区,选择 Amazon Aurora 作为您的引擎类型版本 请选择 兼容 PostgreSQL 的 Amazon Aurora

    (click to zoom)

    数据库创建向导会为您提供模板,简化 Amazon RDS 数据库的配置。 因为是样本数据库,您可以选择开发/测试模式。

    (click to zoom)

    设置区为数据库命名,设置主用户用户名和密码。 请将信息记录下来,在连接到数据库及创建新用户时均需用到这些信息。

    (click to zoom)

    接下来,选择数据库的实例大小。 选择Burstable 类,再选择 db.t3.medium 实例类。

     

    (click to zoom)

    配置可用性和持续时长。 如果您创建的是生产部署,应在不同的可用性区域配置 Aurora Replica,以获得更好的可用性和持续时长。 鉴于这是一个教程,您可以选择不创建 Aurora Replica

    (click to zoom)

    接下来,Amazon RDS 数据库创建向导将引导您进行连接设置。 请确认数据库所在的 Amazon Virtual Private Cloud (VPC),以及数据库实例的子网和安全组。

    您可以使用亚马逊云科技账户中提供的默认 VPC。 在更多连接配置下找到公共访问,选择启用,即可通过您的计算机连接到该数据库。 选择创建新的 VPC 安全组并命名。

    (click to zoom)

    更多配置下找到初始数据库名称,输入dms_sample。 示例 Oracle 数据库将从同样的模式进行转换。

    (click to zoom)

    滚动到页面底部,选择创建数据库,以创建您的数据库。

    (click to zoom)

    Amazon RDS 开始为您创建数据库。 Amazon RDS 在预配置架构和初始化数据库时,数据库的状态创建中

    当数据库准备就绪可时,状态会变为可用

    (click to zoom)
    (click to zoom)

    您可以在数据库标识列中选择数据库名称以查看详情。 端点区内将显示 Aurora 数据库的写入器读取器的端点。 请您保存读取器端点的值,以备下个模块使用。

    (click to zoom)

    在本模块中,您创建了一个兼容 PostgreSQL 的 Aurora 数据库,作为从旧有数据库进行迁移的目标数据库。

    在下个模块中,您将使用 AWS SCT 从旧有数据库迁移至云原生数据库。

  • 在本模块中,使用 AWS 模式转换工具将您的 Oracle 数据库转换到兼容 PostgreSQL 的云原生 Aurora 数据库。

    进行异构迁移时,最困难的挑战之一就是进行模式迁移。 如果您使用的是数据库自定义功能,比如触发器或视图,其语法可能与您的新数据库并不兼容。 AWS SCT 将协助您执行这一操作。


    使用 AWS SCT 前,需要在源 Oracle 数据库和 PostgreSQL 目标数据库中安装 Java Database Connectivity (JDBC) 驱动。 下载 Oracle JDBC 驱动下载 PostgreSQL JDBC 驱动

    下载好驱动后,请参考操作系统安装指南安装 AWS SCT。

    下载并启动 AWS SCT 后,通过安装向导来创建新项目。 请为项目命名,选择迁移事务型数据库 (OLTP)。 选择 Oracle 作为 源数据库引擎。 然后选择下一步

    (click to zoom)

    接着,请输入源 Oracle 数据库的连接详情。 请使用如下值:

    • 服务器名称: 请使用 Amazon RDS 控制台中列出的数据库端点值。
    • 服务器接口: 请输入 1521。
    • Oracle SID: 请输入 ORCL。
    • 用户名: 请输入您在 Amazon RDS 数据库创建向导中设置的用户名。
    • 密码: 请输入您在 Amazon RDS 数据库创建向导中设置的密码。
    • Oracle 驱动路径: 请找到之前在本模块中安装的 Oracle JDBC 驱动文件。 该文件位于您的下载文件夹中。

    连接信息输入完成后,请选择测试连接,确保您可以连接到数据库。

    (click to zoom)

    连接成功后,请点击 下一步

    (click to zoom)

    在下一页中,选择需要分析的模式。 选择 DMS_SAMPLE,点击下一步

    (click to zoom)

    AWS SCT 将为您分析模式并生成评估。 如图所示,该评估报告展示的是迁移至 PostgreSQL 兼容的 Aurora 状态,100% 的数据库存储对象和 96% 的数据库代码目标可以自动转换。

    您可以向下滚动评估报告,以查阅更多分析细节。 准备完毕后,请点击下一步

    (click to zoom)

    接下来,配置您的目标 Aurora 数据库连接。 在目标数据库引擎下拉菜单中,选择 Amazon Aurora(兼容 PostgreSQL)。 连接详情如下:

    • 服务器名称: 在 Amazon RDS 控制台中输入写入器的端点值。
    • 服务器端口: 输入 5432。
    • 数据库dms_sample ,即您创建的初始数据库名称。
    • 用户名: 输入您在数据库创建向导中设置的用户名。
    • 密码: 输入您在数据库创建向导中设置的用户名。
    • Aurora 驱动路径: 找到之前在本模块中下载的 PostgreSQL 驱动路径。

    信息输入完成后,请选择测试连接来测试您的连接。

    (click to zoom)

    连接成功后,请点击完成结束配置。

    (click to zoom)

    可以看到 AWS SCT 的主界面。 左侧是源 Oracle 数据库。 右侧是目标 Aurora 数据库。

    在左侧找到 DMS_SAMPLE 模式。 右键单击,选择转换模式

    (click to zoom)

    模式转换完成后,请在您的 Aurora 数据库右侧找到 dms_sample。 右键单击,选择 应用到数据库

    (click to zoom)

    AWS SCT 正在将模式应用到您的目标数据库。 此时屏幕显示如下。

    应用完成后,即可以在目标数据库内看到源数据库中的模式对象。

    (click to zoom)

    在本模块中,您了解了如何安装和配置 AWS SCT,这将有助于完成数据库迁移中所需的自动化模式转换。 在本模块中,您已经将 Oracle 模式转换成了兼容 PostgreSQL 的 Aurora 模式。

    在下个模块中,您将在 AWS DMS 中创建复制实例。

     

  • 在本模块中,您将在 AWS DMS 中创建一个复制实例。

    AWS DMS 服务可以将现有数据库中的数据复制到亚马逊云科技的云原生数据库中。 复制实例是一种可以在 AWS DMS 中托管复制任务的 Amazon EC2 实例。 在接下来的模块中,您将创建一个复制任务。


    请在 AWS DMS 控制器中找到复制实例区,创建一个复制实例。 选择创建复制实例,启动复制实例创建向导。

    (click to zoom)

    请在复制实例配置界面为您的复制实例命名并添加描述。 选择您的实例类。 本次课程使用的数据量较小。 您可以选择 dms.t2.micro 实例类。

    为 AWS DMS 选择引擎版本。 最后,为您的复制实例选择分配的存储空间。

    (click to zoom)

    请在复制实例配置页面为您的复制实例选择一个 VPC。 选择与您预配置的 Oracle 和 Aurora 数据库相同的 VPC,以简化复制实例的网络访问。

    还可以选择 多个可用区,并设置是否允许公开访问您的复制实例。 保留这两个设置的默认设定。

    (click to zoom)

    接下来,打开高级安全与网络配置页面。 在 VPC 安全组中,选择附加到 Oracle 数据库的同一个安全组。

    (click to zoom)

    准备完毕后,点击创建,在 AWS DMS 中创建您的复制实例。

    (click to zoom)

    随后,亚马逊云科技会预配置您的复制实例。 在对实例进行预配置及初始化时,其状态会显示为正在创建

    复制实例准备完成后,状态会变更为可用

    (click to zoom)
    (click to zoom)

    在等待复制实例变为可用状态时,前往 Amazon EC2 控制台的安全组页面。 您需要为安全组添加新规则,以允许复制实例访问您的数据库。

    首先,找到您附加在 Oracle 数据库实例和复制实例的安全组,将其选中。

    (click to zoom)

    为安全组选择编辑入站规则

    (click to zoom)

    您的安全组已有一条规则,允许您使用创建数据库时使用的 IP 地址访问您的 Oracle 实例。 点击添加规则,添加一条新规则。 在类型一栏中选择 Oracle-RDS。 在一栏中输入附加给 Oracle 数据库和复制实例的安全组。

    结果应如下所示。 点击保存规则以保存并更新您的安全组规则。

    (click to zoom)

    对于 Aurora 安全组进行同样的配置。 返回 Amazon EC2 控制台的安全组设置。 找到您的 Aurora 数据库中的安全组并选中。

    (click to zoom)

    为安全组选择编辑入站规则

    (click to zoom)

    为您的安全组添加规则。 请选择类别PostgreSQL 为复制实例所在的安全组。

    点击保存规则以保存您的安全组规则。

    (click to zoom)

    当复制实例可用,并将规则更新至安全组后,您就可以继续学习下一个模块了。


    在本模块中,您在 AWS DMS 中创建了一个复制实例。 在将数据从旧有数据库迁移到 Aurora 云原生数据库时,您可以使用该复制实例来执行复制任务。 您还更新了安全组,让您可以通过复制实例访问 Oracle 和 Aurora 数据库实例。

    在下个模块中,您将在 AWS DMS 中为您的源数据库和目标数据库创建端点。

  • 在本模块中,您将为 AWS DMS 中的复制任务创建源端点和目标端点。


    首先,为您的源数据库创建端点。 这是您在 Amazon RDS 中创建的 Oracle 数据库。

    导航至 AWS DMS 控制面板中的端点页面。 点击创建端点来创建一个新的端点。

    (click to zoom)

    在端点创建向导中,选择创建源端点。 点击选择 RDS DB 实例,并在下拉菜单中选中您在 Amazon RDS 中创建的 Oracle 数据库。

    (click to zoom)

    端点配置页面选择来自 Oracle 源引擎。 至此,大部分配置信息均已填写完成。 输入您的密码以完成配置。

    (click to zoom)

    保存端点前,您应当测试连接以确保配置正确。 点开测试端点连接,对连接进行测试。

    选择您想要使用的复制实例,之后点击运行测试。 几秒钟后,您应当看到状态栏显示连接成功。 这表明您已正确配置安全组和端点。 点击创建端点,以保存端点信息。

    (click to zoom)

    接下来,您需要为 Aurora 数据库创建目标端点。 再次回到端点页面,点击创建端点

    (click to zoom)

    此时创建一个目标端点。 在端点类型一栏中选择目标端点。 选中选择 RDS DB 实例选框,选择您所创建的 Aurora 数据库。

    (click to zoom)

    至此,大部分端点配置信息均已填写完成。 输入您的密码以完成配置。

    (click to zoom)

    同样,请测试您的端点连接。 如果您的安全组访问配置正确,即可成功连接。

    选择创建端点来创建您的端点。

    (click to zoom)

    在进入下一模块前,您应该已经配置好了两个端点:您的源 Oracle 数据库断点和目标 Aurora 数据库端点。 请务必测试端点连接,确保能成功连接到两个数据库。 之后进入下一模块。


    在本模块中,您创建了连接至数据库的端点。 在下个模块中,您将利用这些端点来创建复制任务,并将数据从源数据库复制到目标数据库。

  • 在本模块中,您将在 AWS DMS 中创建一个复制任务。

    复制任务会将数据从源数据库中迁移至目标数据库。 在这个示例中,您要将数据从旧有的关系型数据库迁移至 Aurora 中的云原生关系型数据库。


    首先,导航至 AWS DMS 控制面板中的数据库迁移任务页面。 点击创建任务来创建一个新的复制任务。

    (点击放大)

    任务配置页面,为复制任务设置参数。 首先为您的任务命名,并选择在之前的模块中创建的复制实例。 再选择旧有数据库的源端点和 Aurora 云原生数据库的目标端点。

    您还需要选择迁移类型。 共有两种类型可选:

    1. 迁移现有数据会一次性将数据从您的源数据库复制到目标数据库。
    2. 仅复制数据更改会将源数据库中所有正在进行的操作复制到目标数据库。

    本教程的内容是将现有数据迁移至新的 Aurora 数据库。 在迁移类型一栏中点击迁移现有数据

    (点击放大)

    任务设置页面,提供了目标表准备模式设置选项。 点击截断。 如果您使用默认选项 删除目标表,您通过 AWS SCT 创建的表就会被移除。

    (点击放大)

    表映射页面,向 AWS DMS 声明您想复制哪些表以及如何将它们映射到目标数据库。

    输入DMS_SAMPLE作为模式名称,并使用通配符 %表示表名DMS_SAMPLE 模式中的所有表将被复制到您新建的数据库。

    (点击放大)

    源 Oracle 数据库中的模式名称为大写,而您在 PostgreSQL 中创建的模式名称为小写。 可为此增加一条转换规则。

    转换规则页面,点击新增转换规则。 对于目标一栏,请在下拉选项中选择模式。 对于模式名称,请使用通配符 %。 对于操作一栏,点击转换为小写

    (点击放大)

    滚动光标至创建向导底部,点击创建任务来创建复制任务。

    (点击放大)

    您的任务会显示在数据库迁移任务页面中,任务状态 显示为正在创建

    创建复制任务并加载完成后,状态变更为加载完成

    (点击放大)
    (点击放大)

    您已经成功地将数据迁移到了 Aurora 数据库。 您可以使用 psql 或其他 PostgreSQL 客户端连接数据库,以确保能够访问您的数据。


    在本模块中,您在 AWS DMS 中创建了一项复制任务,将现有数据从 Oracle 迁移到了 Aurora 中的云原生数据库。

    在下一个模块中,您将完成迁移并清理之前创建的资源。

  • 如果您已按照本课程完成了所有操作,您应该已经使用 Aurora 创建了一个云原生的关系型数据库。 您也使用同样的样本数据创建了一个 Oracle 数据库。 您已经了解了如何使用 AWS SCT 将模式迁移至新的数据库引擎。 最后,您也了解了如何使用 AWS DMS 将数据迁移到新的数据库。

    在最后的模块中,您将学习如何迁移并清理您的 AWS DMS 资源。

    完成初始迁移,将所有数据同步到新数据库后,即可将新数据库作为主数据库。 将应用程序的代码修改为从新的数据库读取和写入。

    切换到使用主数据库并对结果有十足把握后,您需要删除 AWS DMS 基础设施。


    在 AWS DMS 控制台中找到端点设置页面 。 选中源端点及目标端点,点击删除

    (点击放大)

    在 AWS DMS 控制台中找到复制实例。 如果您的复制实例未被其他复制任务使用,选中并点击删除

    (点击放大)

    现在,请删除您在本次课程中使用的 Amazon RDS 数据库。 在 Amazon RDS 控制台中,找到您的 Oracle 数据库并点击删除

    (点击放大)

    选中您的 Aurora 数据库集中的写入器实例,点击删除。 但在真实的迁移场景中,请勿删除这个数据库,因为它将成为您日后的生产数据库。

    (点击放大)

    在本模块中,您已经了解了如何使用新的数据库来迁移应用。 您也了解了如何清理在本次课程中创建的资源。

在本次课程中,您使用 Aurora 将旧有数据库迁移到了云原生的关系型数据库。 在从旧有数据库向云原生数据库迁移方过程中,两个数据库引擎的模式和代码对象可能并不一致。 利用AWS SCT 可增强数据库引擎间迁移的安全性。 此外, AWS DMS 还能简化不同数据库之间的数据迁移流程。