在本课程中,您将学习如何使用 Amazon Aurora 将旧有的 Oracle 数据库迁移至云原生的数据库。 首先,创建一个 Oracle 数据库并为其加载样本数据。 之后在 Aurora 中创建一个数据库,使用 AWS DMS 对 Oracle 数据库中的数据进行迁移。 最后,您将掌握如何使用 Aurora,将旧有的数据库迁移至云原生的数据库。
时长:30— 45 分钟
Aurora 是亚马逊云科技推出的一种全托管型关系型数据库。 其引擎可兼容 MySQL 和 PostgreSQL,专为云环境而打造,可提升服务性能。 与旧有数据库相比,Aurora 的性能更快、可用性更强。
利用 Aurora,您可以将数据库运营托管给亚马逊云科技,您的团队也能将更多精力投入到为用户进行创新之中。 Aurora 可为您处理集群扩容、实例故障转移、数据备份和软件升级。 得益于亚马逊云科技的高效云服务,您能够使用速度更快、价格更低、可靠性更强的数据库服务。
通过本课程,您将了解如何使用 Aurora 将旧有的 Oracle 数据库迁移至全面托管的云原生数据库。 本次课程共包含 8 个模块。
-
1. 创建 Oracle 数据库
在本模块中,您将在 Amazon RDS 中创建 Oracle 数据库。 它将作为源数据库,从而利用 Aurora迁移至云原生数据库。
首先,请打开 Amazon RDS 控制台。 在主页点击创建数据库可创建一个新的数据库。
这将启动数据库创建向导。 在引擎选项的引擎类型一栏里,选择 Oracle。 然后,选择 Oracle Standard Edition Two 并使用默认版本。 您无需使用自己的 Oracle 许可证,只需开启许可证中的包含许可证选项。
Amazon RDS 数据库创建向导的下一个步骤是设置连接。 您必须指定数据库所在的 Amazon Virtual Private Cloud (Amazon VPC)以及数据库实例的子网和安全组。
您可以选择亚马逊云科技账户中的默认 VPC 。 在其他连接配置部分,在公共访问选项里选择启用,这样您就可以从自己的计算机连接数据库。 接下来选择创建新的 VPC 安全组并为其命名。
在本模块中,您创建了一个 Oracle 数据库,借助 Aurora ,您可以将其迁移至云原生的关系型数据库。 在下一模块中,您将为 Oracle 数据库加载样本数据,并为数据做好迁移至 Aurora 的准备。
-
2. 为您的 Oracle 数据库加载样本数据
在本模块中,您将为 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 数据库的连接状态,具体如图所示。
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_DATA 和 NFL_DATA。
接下来,请使用计数功能,确保表格为分行显示。 您可以执行以下命令,对 PERSON 表的全部记录进行计数。
SELECT count(*) FROM person;
结果如图所示,即 PERSON 表中有 7055276 条记录。
最后,执行如下命令来查看通过脚本配置的数据库触发器。
SELECT trigger_name, trigger_type FROM sys.all_triggers WHERE owner = 'DMS_SAMPLE';
可以看到,您的数据库中有三种触发器。
您已通过脚本创建了表并载入了记录。 您还使用了 Oracle 的触发器和视图等高级功能。 这些触发器和视图会增加迁移的难度。 幸运的是, AWS SCT 对这一步进行了自动化处理。在本次课程中,您可以在未来的模块中使用 AWS SCT。
在本模块中,您已将用于迁移的样本数据载入到了 Oracle 数据库中。 加载数据后,您通过几次 SQL 查询查看了数据库中创建的数据和对象。
在下个模块中,您将创建迁移所需的 Aurora 目标数据库。
-
3. 在 Aurora 中创建一个兼容 PostgreSQL的数据库。
在本模块中,您将创建一个 Aurora 数据库,作为您从旧有数据库迁移的目标数据库。 Aurora 是一种云原生的关系型数据库,与旧有数据库相比,它具备无与伦比的高性能和可用性。 它能完全兼容 MySQL 和 PostgreSQL。 在本模块中,您将使用兼容 PostgreSQL 版本的 Aurora。
首先,请进入 Amazon RDS 控制台。 您可以看到在之前的模块中创建的 Oracle 数据库。 选择创建数据库。
配置可用性和持续时长。 如果您创建的是生产部署,应在不同的可用性区域配置 Aurora Replica,以获得更好的可用性和持续时长。 鉴于这是一个教程,您可以选择不创建 Aurora Replica。
接下来,Amazon RDS 数据库创建向导将引导您进行连接设置。 请确认数据库所在的 Amazon Virtual Private Cloud (VPC),以及数据库实例的子网和安全组。
您可以使用亚马逊云科技账户中提供的默认 VPC。 在更多连接配置下找到公共访问,选择启用,即可通过您的计算机连接到该数据库。 选择创建新的 VPC 安全组并命名。
Amazon RDS 开始为您创建数据库。 Amazon RDS 在预配置架构和初始化数据库时,数据库的状态为创建中。
当数据库准备就绪可时,状态会变为可用。
在本模块中,您创建了一个兼容 PostgreSQL 的 Aurora 数据库,作为从旧有数据库进行迁移的目标数据库。
在下个模块中,您将使用 AWS SCT 从旧有数据库迁移至云原生数据库。
-
4. 使用 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 作为 源数据库引擎。 然后选择下一步。
接着,请输入源 Oracle 数据库的连接详情。 请使用如下值:
- 服务器名称: 请使用 Amazon RDS 控制台中列出的数据库端点值。
- 服务器接口: 请输入 1521。
- Oracle SID: 请输入 ORCL。
- 用户名: 请输入您在 Amazon RDS 数据库创建向导中设置的用户名。
- 密码: 请输入您在 Amazon RDS 数据库创建向导中设置的密码。
- Oracle 驱动路径: 请找到之前在本模块中安装的 Oracle JDBC 驱动文件。 该文件位于您的下载文件夹中。
连接信息输入完成后,请选择测试连接,确保您可以连接到数据库。
AWS SCT 将为您分析模式并生成评估。 如图所示,该评估报告展示的是迁移至 PostgreSQL 兼容的 Aurora 状态,100% 的数据库存储对象和 96% 的数据库代码目标可以自动转换。
您可以向下滚动评估报告,以查阅更多分析细节。 准备完毕后,请点击下一步。
接下来,配置您的目标 Aurora 数据库连接。 在目标数据库引擎下拉菜单中,选择 Amazon Aurora(兼容 PostgreSQL)。 连接详情如下:
- 服务器名称: 在 Amazon RDS 控制台中输入写入器的端点值。
- 服务器端口: 输入 5432。
- 数据库: dms_sample ,即您创建的初始数据库名称。
- 用户名: 输入您在数据库创建向导中设置的用户名。
- 密码: 输入您在数据库创建向导中设置的用户名。
- Aurora 驱动路径: 找到之前在本模块中下载的 PostgreSQL 驱动路径。
信息输入完成后,请选择测试连接来测试您的连接。
可以看到 AWS SCT 的主界面。 左侧是源 Oracle 数据库。 右侧是目标 Aurora 数据库。
在左侧找到 DMS_SAMPLE 模式。 右键单击,选择转换模式。
在本模块中,您了解了如何安装和配置 AWS SCT,这将有助于完成数据库迁移中所需的自动化模式转换。 在本模块中,您已经将 Oracle 模式转换成了兼容 PostgreSQL 的 Aurora 模式。
在下个模块中,您将在 AWS DMS 中创建复制实例。
-
5. 在 AWS DMS 中创建复制实例。
在本模块中,您将在 AWS DMS 中创建一个复制实例。
AWS DMS 服务可以将现有数据库中的数据复制到亚马逊云科技的云原生数据库中。 复制实例是一种可以在 AWS DMS 中托管复制任务的 Amazon EC2 实例。 在接下来的模块中,您将创建一个复制任务。
请在 AWS DMS 控制器中找到复制实例区,创建一个复制实例。 选择创建复制实例,启动复制实例创建向导。
请在复制实例配置界面为您的复制实例命名并添加描述。 选择您的实例类。 本次课程使用的数据量较小。 您可以选择 dms.t2.micro 实例类。
为 AWS DMS 选择引擎版本。 最后,为您的复制实例选择分配的存储空间。
请在复制实例配置页面为您的复制实例选择一个 VPC。 选择与您预配置的 Oracle 和 Aurora 数据库相同的 VPC,以简化复制实例的网络访问。
还可以选择 多个可用区,并设置是否允许公开访问您的复制实例。 保留这两个设置的默认设定。
随后,亚马逊云科技会预配置您的复制实例。 在对实例进行预配置及初始化时,其状态会显示为正在创建。
复制实例准备完成后,状态会变更为可用。
在等待复制实例变为可用状态时,前往 Amazon EC2 控制台的安全组页面。 您需要为安全组添加新规则,以允许复制实例访问您的数据库。
首先,找到您附加在 Oracle 数据库实例和复制实例的安全组,将其选中。
您的安全组已有一条规则,允许您使用创建数据库时使用的 IP 地址访问您的 Oracle 实例。 点击添加规则,添加一条新规则。 在类型一栏中选择 Oracle-RDS。 在源一栏中输入附加给 Oracle 数据库和复制实例的安全组。
结果应如下所示。 点击保存规则以保存并更新您的安全组规则。
对于 Aurora 安全组进行同样的配置。 返回 Amazon EC2 控制台的安全组设置。 找到您的 Aurora 数据库中的安全组并选中。
当复制实例可用,并将规则更新至安全组后,您就可以继续学习下一个模块了。
在本模块中,您在 AWS DMS 中创建了一个复制实例。 在将数据从旧有数据库迁移到 Aurora 云原生数据库时,您可以使用该复制实例来执行复制任务。 您还更新了安全组,让您可以通过复制实例访问 Oracle 和 Aurora 数据库实例。
在下个模块中,您将在 AWS DMS 中为您的源数据库和目标数据库创建端点。
-
6. 在 AWS DMS 中创建端点
在本模块中,您将为 AWS DMS 中的复制任务创建源端点和目标端点。
首先,为您的源数据库创建端点。 这是您在 Amazon RDS 中创建的 Oracle 数据库。
导航至 AWS DMS 控制面板中的端点页面。 点击创建端点来创建一个新的端点。
保存端点前,您应当测试连接以确保配置正确。 点开测试端点连接,对连接进行测试。
选择您想要使用的复制实例,之后点击运行测试。 几秒钟后,您应当看到状态栏显示连接成功。 这表明您已正确配置安全组和端点。 点击创建端点,以保存端点信息。
在进入下一模块前,您应该已经配置好了两个端点:您的源 Oracle 数据库断点和目标 Aurora 数据库端点。 请务必测试端点连接,确保能成功连接到两个数据库。 之后进入下一模块。
在本模块中,您创建了连接至数据库的端点。 在下个模块中,您将利用这些端点来创建复制任务,并将数据从源数据库复制到目标数据库。
-
7. 在 AWS DMS 中创建一个复制任务
在本模块中,您将在 AWS DMS 中创建一个复制任务。
复制任务会将数据从源数据库中迁移至目标数据库。 在这个示例中,您要将数据从旧有的关系型数据库迁移至 Aurora 中的云原生关系型数据库。
首先,导航至 AWS DMS 控制面板中的数据库迁移任务页面。 点击创建任务来创建一个新的复制任务。
在任务配置页面,为复制任务设置参数。 首先为您的任务命名,并选择在之前的模块中创建的复制实例。 再选择旧有数据库的源端点和 Aurora 云原生数据库的目标端点。
您还需要选择迁移类型。 共有两种类型可选:
- 迁移现有数据会一次性将数据从您的源数据库复制到目标数据库。
- 仅复制数据更改会将源数据库中所有正在进行的操作复制到目标数据库。
本教程的内容是将现有数据迁移至新的 Aurora 数据库。 在迁移类型一栏中点击迁移现有数据。
在表映射页面,向 AWS DMS 声明您想复制哪些表以及如何将它们映射到目标数据库。
输入DMS_SAMPLE作为模式名称,并使用通配符 %表示表名。 DMS_SAMPLE 模式中的所有表将被复制到您新建的数据库。
源 Oracle 数据库中的模式名称为大写,而您在 PostgreSQL 中创建的模式名称为小写。 可为此增加一条转换规则。
在转换规则页面,点击新增转换规则。 对于目标一栏,请在下拉选项中选择模式。 对于模式名称,请使用通配符 %。 对于操作一栏,点击转换为小写。
您已经成功地将数据迁移到了 Aurora 数据库。 您可以使用 psql 或其他 PostgreSQL 客户端连接数据库,以确保能够访问您的数据。
在本模块中,您在 AWS DMS 中创建了一项复制任务,将现有数据从 Oracle 迁移到了 Aurora 中的云原生数据库。
在下一个模块中,您将完成迁移并清理之前创建的资源。
-
8. 完成迁移并清理资源。
如果您已按照本课程完成了所有操作,您应该已经使用 Aurora 创建了一个云原生的关系型数据库。 您也使用同样的样本数据创建了一个 Oracle 数据库。 您已经了解了如何使用 AWS SCT 将模式迁移至新的数据库引擎。 最后,您也了解了如何使用 AWS DMS 将数据迁移到新的数据库。
在最后的模块中,您将学习如何迁移并清理您的 AWS DMS 资源。
完成初始迁移,将所有数据同步到新数据库后,即可将新数据库作为主数据库。 将应用程序的代码修改为从新的数据库读取和写入。
切换到使用主数据库并对结果有十足把握后,您需要删除 AWS DMS 基础设施。
首先,停止并删除用于复制数据的数据库迁移任务。 导航至 AWS DMS 控制面板中的数据库迁移任务页面。 选择您想要删除的任务并点击删除。
在 AWS DMS 控制台中找到端点设置页面 。 选中源端点及目标端点,点击删除。
在 AWS DMS 控制台中找到复制实例。 如果您的复制实例未被其他复制任务使用,选中并点击删除。
现在,请删除您在本次课程中使用的 Amazon RDS 数据库。 在 Amazon RDS 控制台中,找到您的 Oracle 数据库并点击删除。
在本模块中,您已经了解了如何使用新的数据库来迁移应用。 您也了解了如何清理在本次课程中创建的资源。
在本次课程中,您使用 Aurora 将旧有数据库迁移到了云原生的关系型数据库。 在从旧有数据库向云原生数据库迁移方过程中,两个数据库引擎的模式和代码对象可能并不一致。 利用AWS SCT 可增强数据库引擎间迁移的安全性。 此外, AWS DMS 还能简化不同数据库之间的数据迁移流程。