从 Oracle 迁移到 Amazon RDS for MySQL、MariaDB 或 Amazon
从 Oracle 迁移到 Amazon RDS for MySQL、MariaDB 或 Amazon Aurora MySQL 的方法
通过使用 Oracle GoldenGate

关键要点
关键要点
迁移 Oracle 数据库到 Amazon RDS 的主要考虑因素有:数据库转换需求、选择开源数据库的企业决策以及减少运营成本的愿望。AWS 推荐的数据库转换工具为 AWS Schema Conversion Tool (AWS SCT),而 AWS Database Migration Service (AWS DMS) 则用于迁移到 AWS 云。使用 Oracle GoldenGate (OGG) 可以在高事务量数据库或组织已批准 OGG 的情况下实现更加灵活的迁移。本文将详细介绍如何通过 OGG 将 Oracle 数据库迁移到 Amazon RDS for MySQL、Amazon RDS for MariaDB 或 Amazon Aurora MySQL 兼容版。在考虑将 Oracle 数据库升级到 AWS 的开源数据库时,可以选择 Amazon 关系数据库服务 (Amazon RDS) for MySQL、Amazon RDS for MariaDB、Amazon RDS for PostgreSQL、或 Amazon Aurora。目标数据库的选择通常取决于以下三个主要因素:
数据库转换或重构的努力企业范围内对开源数据库引擎的选择决策减少运营成本、提高生产力以及改进员工和客户体验的愿望确定了目标数据库引擎后,下一个重要步骤是识别最适合的数据库转换和迁移工具。选择迁移工具的关键考虑因素包括其在组织内的安全合规性、许可证要求以及与源数据库的交互方式。
手机版加速器AWS 推荐的数据库转换工具是 AWS Schema Conversion Tool (AWS SCT)。使用此工具,您可以将表、视图、存储过程和函数转换为所需的目标数据库引擎。而 AWS 数据库迁移服务 (AWS DMS) 用于将关系数据库迁移到 AWS 云。使用 AWS DMS 进行数据库迁移的主要特点包括安全性、最小停机时间以及简单易用的架构。
以下 AWS 指导方针 概述了如何使用 AWS DMS 和 AWS SCT 将本地 Oracle 数据库转换并迁移到 RDS for MySQL 数据库。此外,以下 迁移手册 详细说明了从 Oracle 迁移到 Aurora MySQL 数据库所需的步骤,并可以用于迁移到任何 MySQL 兼容数据库,包括 MariaDB。
在某些情况下,您可能想要使用 Oracle GoldenGate (OGG) 进行迁移。例如,如果源数据库是一个高事务量数据库,或者当您需要在 MySQL 和 Oracle 之间进行主动复制。此外,如果 OGG 已经得到了组织安全团队的批准,或者您已经获得了 OGG 许可证并具备相关专长,或者您无法使用 AWS DMS。在此情况下,使用 AWS SCT 进行数据库转换以及 OGG 进行数据库迁移将更为合理。
在本文中,我们将展示如何通过 OGG 将 Oracle 数据库迁移到 Amazon RDS for MySQL、Amazon RDS for MariaDB 或 Amazon Aurora MySQLCompatible Edition。
解决方案概览
下图展示了您现有的 Oracle 数据库可能位于本地、Amazon EC2 实例上或 Amazon RDS for Oracle 中与目标 MySQL 兼容数据库之间的通信流程。
下图提供了 OGG 在 Amazon EC2 上的各个组件的详细信息,用于将本地 Oracle 数据库迁移到 Amazon Aurora 或 RDS 上的 MySQL 兼容数据库。
此解决方案的好处在于您不必将追踪文件从一个 EC2 实例移动到另一个,这可以提高迁移性能。但也可以通过其他方式配置此迁移,例如使用多个 EC2 实例,一个配置 OGG for Oracle 库,另一个配置 OGG for MySQL 库。您还可以在本地环境中安装 OGG for Oracle,并在与目标 MySQL 数据库相同的 VPC 中的 EC2 实例上安装 OGG for MySQL。
在接下来的部分中,我们将展示如何设置基础设施并实施该解决方案。
前提条件
在使用 OGG 迁移数据库之前,您必须具备以下条件:
运行在本地环境、Amazon EC2 上或 Amazon RDS for Oracle 的源 Oracle 数据库版本 11 及以上源数据库上启用归档日志运行在 Amazon RDS 或 Aurora 的目标 MySQL 版本 57 及以上或 MariaDB 版本 104 及以上带有以下内容的 EC2 实例:Oracle 客户端OGG for Oracle 库OGG for MySQL 库在源 (链接) 和目标 (链接) 数据库的数据库用户账户EC2 实例与源及目标数据库服务器之间的安全网络连接基础设施设置
下表详细说明了在本文中使用的环境和数据库实例名称。
数据库角色IP 地址实例名称数据库唯一名称数据库开放模式数据库端口源 Oracle 数据库17231xxxxORASOURCEorasource读写1521目标 RDS for MySQL 数据库17231xxxxmysqltestxxxxxapsoutheast2rdsamazonawscomtestdb读写1433带有 GoldenGate 的 Amazon EC217231xxxx配置源 Oracle 数据库
要配置源 Oracle 数据库,请完成以下步骤:
将 ENABLEGOLDENGATEREPLICATION 参数设置为 True。这将启用 RDBMS 为 OGG 提供的控制服务。然后,请确保在数据库级别启用 补充日志记录: sql ALTER DATABASE ADD SUPPLEMENTAL LOG DATA除必须的补充日志记录外,强烈建议将 Oracle 数据库设置为强制日志模式。这确保对于更新操作,行链信息会在重做日志中更新。 sql ALTER DATABASE FORCE LOGGING确保启用归档日志保留。这是确保 OGG Replicat 在出现任何问题时能够恢复所必需的。通常建议为 OGG 创建一个具有 最小权限 的单独用户。以下命令会创建一个具有 OGG 工作所需最小权限的数据库用户: sql CREATE USER oggadm1 IDENTIFIED BY ltYOUR PASSWORDgt DEFAULT TABLESPACE ADMINISTRATOR TEMPORARY TABLESPACE TEMP ALTER USER oggadm1 QUOTA UNLIMITED ON ADMINISTRATOR GRANT CREATE SESSION ALTER SESSION TO oggadm1 GRANT RESOURCE TO oggadm1 GRANT SELECT ANY DICTIONARY TO oggadm1 GRANT FLASHBACK ANY TABLE TO oggadm1 GRANT SELECT ANY TABLE TO oggadm1 GRANT SELECTCATALOGROLE TO oggadm1 WITH ADMIN OPTION GRANT SELECT ON DBACLUSTERS TO oggadm1 GRANT EXECUTE ON DBMSFLASHBACK TO oggadm1 GRANT SELECT ON SYSVDATABASE TO oggadm1 GRANT ALTER ANY TABLE TO oggadm1需要额外的权限以查询本地元数据以生成数据定义文件,供将数据库对象从 Oracle 转换到 MySQL 引擎: sql BEGIN dbmsgoldengateauthgrantadminprivilege ( grantee =gtOGGADM1 privilegetype =gt CAPTURE grantselectprivileges =gt TRUE dogrants =gt TRUE container =gt ALL ) END为初始加载配置 OGG for Oracle
确保 Amazon EC2 上的 OGG for Oracle 可以连接到源 Oracle 数据库。您可以通过尝试从 SQLPlus 连接,或者直接通过 OGG for Oracle 命令行接口连接来验证。完成以下步骤以配置 OGG for Oracle 进行初始加载:
验证源数据库连接。 shell GGSCI Oracle 1gt dblogin userid oggadm1@orasource password ltpasswordgt Successfully logged into database创建子目录。OGG 配置从创建各种文件的目录位置下方列出的文件开始,使用命令创建子目录: shell GGSCI Oracle 2gt create subdirs 创建的各个目录包括:参数文件报告文件检查点文件进程状态文件SQL 脚本文件数据库定义文件提取数据文件临时文件凭据存储文件主密钥钱包文件转储文件
OGG 配置的第一步也是最重要的一步是经理,它是必需的以运行提取和复制。每一个 OGG 实例都将有一个管理进程。如解决方案概览所示,OGG for Oracle 和 OGG for MySQL 需要不同的经理。使用以下命令编辑经理进程的内容: shell GGSCI Oracle 3gt edit params mgr
mgrprm 文件的内容如下: shell PORT 7809
指定所需的经理端口后,可以启动经理。确保前面的文件中指定的端口未被其他进程使用: shell GGSCI Oracle 4gt start mgr GGSCI Oracle 5gt info all Program Status Group Lag at Chkpt Time Since Chkpt MANAGER RUNNING
可选步骤是创建一个钱包来存储源 Oracle 数据库凭据。通过这种方式,您只需指定别名即可避免在提取和复制配置文件中以明文格式指定用户凭据: shell GGSCI Oracle 6gt create wallet Created wallet Opened wallet
创建钱包后,使用现有凭据编辑钱包: shell GGSCI Oracle 7gt add credentialstore Credential store created GGSCI Oracle 8gt alter credentialstore add user oggadm1@orasource password ltpasswordgtalias ggadminsrc Credential store altered GGSCI Oracle 9gt info credentialstore Reading from credential store Default domain OracleGoldenGate Alias ggadminsrc Userid oggadm1@orasource
钱包准备好后,使用您创建的别名登录到 OGG for Oracle 数据库。您不再需要指定数据库凭据。您可以使用 dblogin 工具: shell GGSCI Oracle 10gt dblogin useridalias ggadminsrc Successfully logged into database
下一步是运行 DEFGEN 实用工具,它生成一个文件,包含在 defgen 参数文件中列出的表或模式每个列项的字段描述。要修改模式名称和文件输出位置,需要修改 defgen 实用程序的参数文件: shell GGSCI Oracle 11gt edit params defgen
defgenprm 文件的内容如下。此文件会生成 DMSSAMPLE 模式中所有表的结构。我们已将 DMSSAMPLE 用作源数据库的 示例模式,您可以根据您的模式名称或仅迁移的表进行修改: shell defsfile /u01/app/oracle/product/ggsrc/dirdef/dmssampledefpurge UserIdAlias ggadminsrc table DMSSAMPLE
创建好 defgen 的参数文件并包含正确的用户凭据和要迁移的表列表后,可以按如下方式运行它: shell /defgen paramfile /u01/app/oracle/product/ggsrc/dirprm/defgenprm
defgen 实用工具会创建像以下示例内容的文件,包含所有表的信息。文件大小可能因参数文件中提及的表的数量而异,文件用于将 Oracle 数据翻译为 MySQL 数据:
Oracle GoldenGate Table Definition Generator for OracleVersion 191004 OGGCORE191000PLATFORMS1910171054Linux x64 64bit (optimized) Oracle 19c on Oct 17 2019 153220Copyright (C) 1995 2019 Oracle and/or its affiliates All rights reservedStarting at 20230510 043933
Operating System VersionLinuxVersion #1 SMP Fri Mar 17 015238 EDT 2023 Release 4180425192el87x8664Node ip172312275apsoutheast2computeinternal11 生成文件后,将其复制到 OGG for MySQL 相应的目录中。在我们的解决方案中,我们使用同一个 EC2 实例分别安装 OGG for Oracle (位置 /u01/app/oracle/product/ggsrc) 和 OGG for MySQL (位置 /u01/app/oracle/product/ggtrg):shellcp /u01/app/oracle/product/ggsrc/dirdef/dmssampledef /u01/app/oracle/product/ggtrg/dirdef/dmssampledef
启用源 Oracle 数据库的主键无条件日志记录以及所有唯一键和外键的条件补充日志记录: shell GGSCI Oracle 12gt dblogin useridalias ggadminsrc GGSCI Oracle 13gt add schematrandata DMSSAMPLE
此步骤在仅需一次加载数据时不是必需的您不需要使用 OGG 复制正在进行的更改。
schematrandata 添加补充日志记录,并记录 SCNOracle 系统变化编号。这将允许第二个 Replicat 进程仅用于 CDC从初始加载提取停止的点开始应用更改。因此,在启动第一次提取以加载初始数据之前,启用该设置是强制性的。
如果希望启用的补充日志记录与 OGG 独立,则必须使用以下命令在每个表上添加补充日志记录: sql ALTER