本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
从 Amazon RDS for Oracle 迁移到 Amazon RDS for MySQL
由 Jitender Kumar (AWS)、Neha Sharma (AWS) 和 Srini Ramaswamy (AWS) 创作
摘要
此模式为在亚马逊网络服务 (AWS) 上将适用于 Oracle 数据库实例的亚马逊关系数据库服务 (Amazon RDS) 迁移到亚马逊 RDS for MySQL 数据库实例提供了指导。该模式使用 AWS 数据库迁移服务 (AWS DMS) 和 AWS 架构转换工具 (AWS SCT)。
该模式提供了处理存储过程迁移的最佳实践。它还涵盖了为支持应用程序层而进行的代码更改。
先决条件和限制
先决条件
一个有效的 Amazon Web Services account。
Amazon RDS for Oracle 源数据库
Amazon RDS for MySQL 目标数据库。源数据库和目标数据库应位于同一个虚拟私有云 (VPC) 中。如果您使用多个 VPCs,或者您必须拥有所需的访问权限。
允许在源数据库和目标数据库、AWS SCT、Application Server和 AWS DMS 之间建立连接的安全组。
具有源数据库运行 AWS SCT 所需权限的用户账户。
为在源数据库上运行 AWS DMS 启用了补充日志。
限制
源和目标 Amazon RDS 数据库大小限制为 64 TB。有关 Amazon RDS 的大小信息,请参阅 AWS 文档。
Oracle 对于数据库对象不区分大小写,但 MySQL 则不然。AWS SCT 可以在创建对象时处理此问题。但是,要支持完全不区分大小写,则需要一些手动操作。
此迁移不使用 MySQL 扩展来启用 Oracle 原生功能。AWS SCT 处理大部分转换,但需要进行一些工作来手动更改代码。
应用程序中需要更改 Java Database Connectivity (JDBC) 驱动程序。
产品版本
适用于 Oracle 的 Amazon RDS 12.2.0.1 及更高版本。有关当前支持的 RDS for Oracle 版本,请参阅 AWS 文档。
适用于 MySQL 的 Amazon RDS 8.0.15 及更高版本。有关当前支持的 RDS for MySQL 版本,请参阅 AWS 文档。
AWS DMS 版本 3.3.0 及更高版本。有关 AWS DMS 支持的源终端节点和目标终端节点的更多信息,请参阅 AWS 文档。
AWS SCT 版本 1.0.628 及更高版本。 请参阅 AWS 文档中的 AWS SCT 源和目标终端节点支持矩阵。
架构
源技术堆栈
Amazon RDS for Oracle。有关更多信息,请参阅使用 Oracle 数据库作为 AWS DMS 的来源。
目标技术堆栈
Amazon RDS for MySQL。有关更多信息,请参阅使用与 MySQL 兼容的数据库作为 AWS DMS 的目标。
迁移架构
在下图中,AWS SCT 从 Amazon RDS for Oracle 源数据库复制和转换架构对象,并将这些对象发送到 Amazon RDS for MySQL 目标数据库。AWS DMS 复制源数据库中的数据并将其发送到 Amazon RDS for MySQL 实例。

工具
AWS 数据迁移服务可帮助您将数据存储迁移到 AWS 云中,或者在云和本地设置的组合之间迁移。
Amazon Relational Database Service (Amazon RDS) 可帮助您在 Amazon Web Services Cloud 中设置、操作和扩展关系数据库。这种模式使用适用于甲骨文的亚马逊 RDS 和适用于 MySQL 的亚马逊 RDS。
AWS Schema Conversion Tool(AWS SCT)通过自动将源数据库架构和大部分自定义代码转换为与目标数据库兼容的格式来支持异构数据库迁移。
操作说明
Task | 描述 | 所需技能 |
---|---|---|
验证源数据库和目标数据库的版本和引擎。 | 数据库管理员 | |
确定目标服务器实例的硬件要求。 | 数据库管理员, SysAdmin | |
识别存储需求(存储类型和容量)。 | 数据库管理员, SysAdmin | |
选择适当的实例类型(容量、存储功能、网络功能)。 | 数据库管理员, SysAdmin | |
确定源数据库和目标数据库的网络访问安全要求。 | 数据库管理员, SysAdmin | |
选择应用程序迁移策略。 | 考虑割接活动是要完全停机还是部分停机。 | DBA、 SysAdmin、应用程序所有者 |
Task | 描述 | 所需技能 |
---|---|---|
创建 VPC 和子网。 | SysAdmin | |
创建安全组和网络访问控制列表 (ACLs)。 | SysAdmin | |
配置和启动 Amazon RDS for Oracle 实例。 | 数据库管理员, SysAdmin | |
配置和启动 Amazon RDS for MySQL 实例。 | 数据库管理员, SysAdmin | |
准备一个测试用例来验证代码转换。 | 这将有助于对转换后的代码执行单元测试。 | 数据库管理员、开发人员 |
配置 AWS DMS 实例。 | ||
在 AWS DMS 中配置源和目标端点。 |
Task | 描述 | 所需技能 |
---|---|---|
通过 AWS SCT 生成目标数据库脚本。 | 检查 AWS SCT 转换代码的准确性。将需要一些手动操作。 | 数据库管理员、开发人员 |
在 AWS SCT 中,选择不区分大小写设置。 | 在 AWS SCT 中选择项目设置、目标区分大小写、不区分大小写。 | 数据库管理员、开发人员 |
在 AWS SCT 中选择不使用 Oracle 原生函数。 | 在 “项目设置” 中,选中 TO_ CHAR/TO_NUMBER/TO _DATE 的功能。 | 数据库管理员、开发人员 |
对“sql%notfound”代码进行更改。 | 您可能需要手动转换代码。 | |
在存储过程中查询表和对象(使用小写查询)。 | 数据库管理员、开发人员 | |
完成所有更改后创建主脚本,然后将主脚本部署到目标数据库上。 | 数据库管理员、开发人员 | |
使用示例数据对存储过程和应用程序调用执行单元测试。 | ||
清理单元测试期间所创建的数据。 | 数据库管理员、开发人员 | |
删除目标数据库上的外键约束。 | 需要执行此步骤来加载初始数据。如果您不想删除外键约束,则必须为特定于主表和辅助表的数据创建迁移任务。 | 数据库管理员、开发人员 |
删除目标数据库的主键与唯一键。 | 此步骤可提高初始加载性能。 | 数据库管理员、开发人员 |
在源数据库上启用补充日志记录。 | 数据库管理员 | |
在 AWS DMS 中为初始加载创建迁移任务,然后运行该任务。 | 选择该选项以迁移现有数据。 | 数据库管理员 |
向目标数据库添加主键和外键。 | 初始加载后需要添加约束。 | 数据库管理员、开发人员 |
创建用于持续复制的迁移任务。 | 持续复制使目标数据库与源数据库保持同步。 | 数据库管理员 |
Task | 描述 | 所需技能 |
---|---|---|
将 Oracle 原生函数替换为 MySQL 原生函数。 | 应用程序所有者 | |
确保 SQL 查询中的数据库对象仅使用小写名称。 | DBA、 SysAdmin、应用程序所有者 |
Task | 描述 | 所需技能 |
---|---|---|
关闭Application Server。 | 应用程序所有者 | |
验证源数据库和目标数据库是否同步。 | 数据库管理员、应用程序所有者 | |
停止 Amazon RDS for Oracle 数据库实例。 | 数据库管理员 | |
停止迁移任务。 | 完成上一步后,该进程将自动停止。 | 数据库管理员 |
将 JDBC 连接从 Oracle 更改至 MySQL。 | 应用程序所有者,数据库管理员 | |
启动应用程序。 | DBA、 SysAdmin、应用程序所有者 |
Task | 描述 | 所需技能 |
---|---|---|
查看和验证项目文档。 | 数据库管理员, SysAdmin | |
收集与迁移时间、手动任务与工具任务的百分比、成本节约等相关的指标。 | 数据库管理员, SysAdmin | |
停止和删除 AWS DMS 实例。 | 数据库管理员 | |
移除源和目标数据库端点 | 数据库管理员 | |
移除迁移任务。 | 数据库管理员 | |
拍摄 Amazon RDS for Oracle 数据库实例的快照。 | 数据库管理员 | |
删除 Amazon RDS for Oracle 数据库实例。 | 数据库管理员 | |
关闭并删除您所用的任何其他临时 AWS 资源。 | 数据库管理员, SysAdmin | |
关闭项目并提供任何反馈。 | 数据库管理员 |