使用 AWS DMS 以近乎零停机时间迁移 Oracle 数据库

时间:2021-07-15 | 标签: | 作者:Q8 | 来源:AWS云计算网络

小提示:您能找到这篇{使用 AWS DMS 以近乎零停机时间迁移 Oracle 数据库}绝对不是偶然,我们能帮您找到潜在客户,解决您的困扰。如果您对本页介绍的使用 AWS DMS 以近乎零停机时间迁移 Oracle 数据库内容感兴趣,有相关需求意向欢迎拨打我们的服务热线,或留言咨询,我们将第一时间联系您!

< ">您的组织中是否有无法承受停机的关键Oracle OLTP数据库?您是否希望在尽量缩短停机时间或不停机的情况下将Oracle数据库迁移到AWS?在当今应用程序和数据库24/7全天候可用的快节奏世界中,将本地数据库迁移到云时,某些应用程序可能无法承受大量停机时间。

< ">本博文讨论了使用AWS Database Migration Service(AWS DMS)及其更改数据捕获(CDC)功能将本地Oracle数据库迁移到Oracle的Amazon Relational Database Service(RDS)的解决方案,以最大程度地缩短停机时间。

< ">< font-size: 18px;">AWS DMS概述

< ">AWS DMS是一项云服务,可帮助您将数据库迁移到AWS。AWS DMS可以将关系数据库、数据仓库、NoSQL数据库和其他类型的数据存储迁移到AWS云中。AWS DMS支持不同数据库平台之间的同质和异类迁移。您可以执行一次迁移,也可以复制正在进行的更改,以使源数据库和目标数据库保持同步。要使用AWS DMS,至少一个数据库端应位于AWS中,即源数据库或目标数据库。

< ">当仅使用AWS DMS复制数据更改时,必须指定一个时间或系统更改号(SCN),AWS DMS将从该时间或系统更改号开始读取数据库日志更改。请务必在服务器上保留这些日志一段时间,以确保AWS DMS可以访问这些更改。

< ">< font-size: 18px;">迁移LOB

< ">如果您的源数据库具有大型二进制对象(LOB),并且您必须将其迁移到目标数据库,则AWS DMS提供以下选项:

< ">完全LOB模式–AWS DMS将所有LOB从源数据库迁移到目标数据库,无论其大小如何。尽管迁移速度较慢,但优势是数据不会被截断。为了获得更好的性能,您应该在新的复制实例上创建一个单独的任务,以迁移LOB大于数兆字节的表格。

< ">受限LOB模式–您指定LOB列数据的最大大小,使AWS DMS可以预分配资源并批量应用LOB。如果LOB列的大小超过任务中指定的大小,则AWS DMS会截断数据,并将警告发送到AWS DMS日志文件。如果您的LOB数据大小在受限LOB大小以内,则可以通过使用受限LOB模式来提高性能。

< ">内联LOB模式–通过复制小型和大型LOB,您可以迁移LOB,而不用截断数据或降低任务性能。首先,为InlineLobMaxSize参数指定一个值,该值仅在完全LOB模式设置为true时可用。AWS DMS任务以内联方式传输小型LOB,此方式更加高效。然后,AWS DMS通过从源表执行查找来迁移大型LOB。但是,内联LOB模式仅在完全加载阶段有效。

< ">< font-size: 18px;">解决方案概览

< ">本博文使用Amazon EC2 for Oracle数据库实例作为源数据库,并假设您的本地数据库和Amazon RDS for Oracle数据库作为目标数据库。本博文还使用Oracle Data Pump将数据从源Oracle数据库导出和导入到目标Oracle RDS for Oracle数据库,并使用AWS DMS将CDC更改从源Oracle数据库复制到Amazon RDS for Oracle数据库。本博文假设您已在AWS云环境中预置Amazon RDS for Oracle数据库作为目标数据库。

< ">下图展示了我们的解决方案架构。

< ">该解决方案包括以下步骤:

< ">设置带有源和目标终端节点的AWS DMS复制实例

< ">使用Oracle Data Pump从本地Oracle数据库导出架构

< ">使用Oracle数据泵将架构导入到Amazon RDS for Oracle数据库中

< ">使用CDC创建AWS DMS复制任务以执行实时复制

< ">在目标Amazon RDS for Oracle数据库上验证数据库架构

< ">< font-size: 18px;">先决条件

< ">根据应用程序,在确定要迁移到Amazon RDS for Oracle数据库的Oracle数据库架构之后,必须在启动迁移之前收集一些架构详细信息,例如架构大小、基于对象类型的对象总数和无效对象。

< ">要使用AWS DMS CDC功能,请在源Oracle数据库上启用数据库级和表格级补充日志记录。完成前提条件后,您可以预置AWS DMS实例。

< ">< font-size: 18px;">预置AWS DMS实例杜嘉班纳危机公关方案

< ">使用DMS_instance.yaml AWS CloudFormation模板来配置AWS DMS复制实例及其源和目标终端节点。请执行以下步骤:

< ">1.在AWS管理控制台的服务下,选择CloudFormation。

< ">2.选择创建堆栈。

< ">3.对于指定模板,选择上传模板文件。

< ">4.选择选择文件。

< ">5.选择DMS_instance.yaml文件。

< ">6.选择下一步。

< ">7.在指定堆栈详细信息页面上,根据需要编辑预定义参数:

< ">对于堆栈名称,输入您的堆栈名称。

< ">在AWS DMS实例参数下,输入以下参数:

< ">   DMSInstanceType–为AWS DMS复制实例选择所需的实例。

< ">   DMSStorageSize–输入AWS DMS实例的存储大小。

< ">在源Oracle数据库配置下,输入以下参数:

< ">   SourceOracleEndpointID–Oracle数据库的源数据库服务器名称

< ">   SourceOracleDatabaseName–源数据库服务名称或适用的SID

< ">   SourceOracleUserName–源数据库用户名。默认为系统。

< ">   SourceOracleDBPassword–源数据库用户名的密码

< ">   SourceOracleDBPort–源数据库端口

< ">在“目标RDS for Oracle“数据库配置下,输入以下参数:

< ">   TargetRDSOracleEndpointID–目标RDS数据库终端节点

< ">   TargetRDSOracleDatabaseName–目标RDS数据库名称

< ">   TargetRSOracleUserName–目标RDS数据库名称

< ">   TargetRDSOracleDBPassword–目标RDS密码

< ">   TargetOracleDBPort–目标RDS数据库端口

< ">在VPC、子网和安全组配置下,输入以下参数:

< ">VPCID–复制实例的VPC

< ">VPCSecurityGroupId–复制实例的VPC安全组

< ">DMSSubnet1–可用区1的子网

< ">DMSSubnet2–可用区2的子网

< ">1.选择下一步。

< ">2.在配置堆栈选项页上的标签”中,输入任何可选值。

< ">3.选择下一步。

< ">4.在Review页面上选中I acknowledge that AWS CloudFormation might create IAM resources with custom names(我确认AWS CloudFormation可能会使用自定义名称创建IAM资源)。

< ">5.选择创建堆栈。预置应在大约5到10分钟内完成。当AWS CloudFormation Stacks控制台显示Create Complete时,此操作完成。

< ">6.在AWS管理控制台中,选择服务。

< ">7.选择数据库迁移服务。

< ">8.在资源管理下,选择复制实例。以下屏幕截图显示复制实例页面,可用于检查输出。

< ">1.在资源管理下,选择终端节点。以下屏幕截图显示终端节点页面,您可以在其中看到源终端节点和目标终端节点。


< ">源终端节点和目标终端节点的状态显示为“活动”后,应测试连接。为每个终端节点选择运行测试,以确保状态显示为成功。

< ">现在,您已经创建AWS DMS复制实例及其源和目标终端节点,并执行了终端节点连接测试,确保其可以成功建立连接。

< ">< font-size: 18px;">将源数据库架构迁移到目标数据库

< ">现在,您可以使用Oracle Data Pump将Oracle数据库架构迁移到Amazon RDS for Oracle数据库。Oracle Data Pump提供了服务器端基础结构,可在Oracle数据库之间快速进行数据和元数据移动。对于大型数据库而言,它是理想的选择,可通过高性能数据移动为数据库管理员节省大量时间。Data Pump自动管理多个并行的卸载和加载流,以实现最大吞吐量。

< ">< font-size: 18px;">导出数据

< ">当源数据库处于联机状态并且正在被应用程序使用时,请使用Oracle Data Pump从源本地Oracle数据库开始数据导出。您还必须从源数据库生成SCN,以在数据泵导出中使用SCN,从而确保数据一致性,并在AWS DMS中将SCN用作更改数据捕获的起点。

< ">要导出数据库模式,请完成以下步骤:

< ">6.记录生成的SCN,以便在导出数据和用于AWS DMS时使用。

< ">7.创建一个参数文件以导出架构。查看参数文件的内容:

< ">8.#Use the generated SCN in step#1 for the flashback_scn parameter and create the required database directory if default DATA_PUMP_DIR database directory is not being used.

< ">9.

< ">10.

< ">11.$cat export_sample_user.par

< ">12.userid电商运营都做什么=dms_sample/dms_sample

< ">13.directory=DATA_PUMP_DIR

< ">14.logfile=export_dms_sample_user.log

< ">15.dumpfile=export_dms_sample_data_%U.dmp

< ">16.schemas=DMS_SAMPLEflashback_scn=7097405

< ">17.使用expdp实用程序执行导出。请参阅以下代码:

< ">< font-size: 18px;">将转储文件传输到目标实例

< ">有多种方法可以将Oracle Data Pump导出文件传输到Amazon RDS for Oracle实例。您可以使用DBMS_FILE_TRANSFER实用程序或Amazon S3集成功能来传输文件。

< ">< font-size: 18px;">使用DBMS_FILE_TRANSFER传输转储文件

< ">您可以使用DBMS_FILE_TRANSFER实用程序将数据泵文件直接传输到RDS实例。您必须在本地和Amazon RDS for Oracle数据库实例之间创建数据库链接。

< ">以下代码创建一个数据库链接ORARDSDB,该链接连接到目标数据库实例上的RDS主用户:

< ">以下脚本使用名为oradsdb的数据库链接将名为export_dms_sample_data_01.dmp的转储文件从源实例复制到目标Amazon RDS for Oracle数据库。

< ">< font-size: 18px;">借助S3集成传输转储文件

< ">借助S3集成,您可以将Oracle数据转储文件直接传输到Amazon RDS for Oracle实例。从源数据库实例导出数据后,可以将数据泵文件上传到S3存储桶,将文件从S3存储桶下载到Amazon RDS for Oracle实例,然后执行导入。您还可以使用此集成功能将数据转储文件从Amazon RDS for Oracle DB实例传输到本地数据库服务器。

< ">Amazon RDS for Oracle实例必须具有S3存储桶的访问权限才能与Amazon RDS for Oracle S3集成和S3结合使用。创建IAM策略和角色使用GetObject、ListBucket、PutObject授予您的IAM策略。创建IAM角色,并将策略附加到该角色。

< ">要使用Amazon RDS for Oracle与S3集成,您的Amazon RDS for Oracle实例必须与包含S3_INTEGRATION选项的选项组关联。

< ">要创建Amazon RDS选项组,请完成以下步骤:

< ">1.在Amazon RDS控制台上的选项组下,选择创建

< ">2.在选项组详细信息下的名称下,输入选项组的名称。输入rds-oracle12r2-option-group。

< ">3.对于描述,输入您的组的描述。

< ">4.对于引擎,选择要迁移的目标Amazon RDS for Oracle数据库的引擎。本博文选择oracle-ee。

< ">5.对于“主要引擎版本”,选择引擎版本。本博文选择12.2。

< ">6.选择创建。

< ">创建选项组后,必须将S3_Integration选项添加到选项组。请执行以下步骤:

< ">1.在RDS控制台上,选择选项组。

< ">2.选择您创建的组。

< ">3.选择添加选项。

< ">4.对于选项,选择S3_INTEGRATION。

< ">5.对于版本,选择1.0。

< ">6.对于立即申请,选择是。

< ">7.选择添加选项。

< ">在将S3_Integration添加到选项组之后,您必须将目标Amazon RDS for Oracle数据库修改为使用新的选项组。完成以下步骤,将选项组添加到现有Amazon RDS for Oracle数据库:

< ">1.在RDS控制台的数据库下,选择要修改的数据库实例。

< ">2.选择修改。出现修改数据库实例页面

< ">3.在数据库选项下,对于选项组,选择您新创建的选项组。

< ">1.选择继续。

< ">2.在安排修改下,选择立即应用。

< ">3.选择修改数据库实例。

< ">当适用于Amazon RDS for Oracle数据库反映了新的选项组时,您必须将IAM角色和S3_Integration功能与数据库实例相关联。请执行以下步骤:

< ">1.在RDS控制台上,选择您的数据库实例。

< ">2.在连接性和安全性标签下,选择管理IAM角色。

< ">3.对于将IAM角色添加到此实例,选择RDS_S3_Integration_Role(您创建的角色)。

< ">4.对于功能,选择S3_INTEGRATION。

< ">5.选择添加角色。

< ">在将IAM角色和S3集成功能与Amazon RDS for Oracle数据库关联之后,您就完成了S3与Amazon RDS for Oracle数据库的集成。现在,您可以使用以下代码将数据转储文件从本地Oracle数据库实例上传到S3:

< ">< font-size: 18px;">开始导入

< ">数据转储文件可用后,在启动导入之前,在目标Amazon RDS for Oracle数据库上创建角色、架构和表空间。

< ">使用RDS主用户帐户连接到目标Amazon RDS for Oracle数据库以执行导入。将Amazon RDS for Oracle数据库tns-entry添加到tnsnames.ora,并使用连接字符串的名称执行导入。

< ">如果要导入另一个表空间或使用另一个架构名称,则可以相应地添加表空间和架构的重映射。

< ">使用以下代码所示的连接字符串名称,从本地开始将导入到Amazon RDS for Oracle:

$impdp admin orardsdb directory=DATA_PUMP_DIR logfile=import.log dumpfile=export_dms_sample_data_01.dmp

Import:Release 12.2.0.1.0-Production on Wed Oct 2 01:52:01 2019

Copyright(c)1982,2017,Oracle and/or its affiliates.All rights reserved.



Connected to:Oracle Database 12c Enterprise Edition Release 12.2.0.1.0-64bit Production

Master table"ADMIN"."SYS_IMPORT_FULL_01"successfully loaded/unloaded

Starting"ADMIN"."SYS_IMPORT_FULL_01":admin/******** orardsdb directory=DATA_PUMP_DIR logfile=import.log dumpfile=export_dms_sample_data_01.dmp

Processing object type SCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMA

Processing object type SCHEMA_EXPORT/SEQUENCE/SEQUENCE



Processing object type SCHEMA_EXPORT/TABLE/PROCACT_INSTANCE

Processing object type SCHEMA_EXPORT/TABLE/TABLE

Processing object type SCHEMA_EXPORT/TABLE/TABLE_DATA

.

.

.

Processing object type SCHEMA_EXPORT/TABLE/GRANT/OWNER_GRANT/OBJECT_GRANT

Processing object type SCHEMA_EXPORT/PACKAGE/PACKAGE_SPEC

Processing object type SCHEMA_EXPORT/PACKAGE/GRANT/OWNER_GRANT/OBJECT_GRANT

Processing object type SCHEMA_EXPORT/PROCEDURE/PROCEDURE

Processing object type SCHEMA_EXPORT/PACKAGE/COMPILE_PACKAGE/PACKAGE_SPEC/ALTER_PACKAGE_SPEC

Processing object type SCHEMA_EXPORT/PROCEDURE/ALTER_PROCEDURE

Processing object type SCHEMA_EXPORT/VIEW/VIEW

Processing object type SCHEMA_EXPORT/PACKAGE/PACKAGE_BODY

Processing object type SCHEMA_EXPORT/TABLE/INDEX/INDEX

< ">< font-size: 18px;">导入后检查和验证

< ">要验证导入是否已成功完成,请查看导入日志文件中是否有任何错误。另外,比较详细信息,例如源数据库对象和目标数据库对象、行数和无效对象,如果存在无效对象,则重新编译。

< ">导入成功完成后,为避免数据不一致,请在相关架构的目标Amazon RDS for Oracle数据库上禁用触发器和外键,以为AWS DMS复制准备目标数据库。

< ">< font-size: 18px;">创建AWS DMS迁移任务

< ">通过以下步骤创建AWS DMS迁移任务:

< ">在AWS DMS控制台上的转换和迁移下,选择数据库迁移任务。

< ">在任务配置下,为任务标识符输入您的任务标识符。

< ">对于复制实例,选择您创建的DMS复制实例。

< ">对于源数据库终端节点,选择您的源终端节点。

< ">对于目标数据库终端节点,选择目标Amazon RDS for Oracle数据库。

< ">对于迁移类型,选择仅复制数据更改。

< ">在任务设置下,选择指定日志序列号。

< ">对于系统更改号,输入您从源Oracle数据库生成的Oracle数据库SCN。

< ">选择启用验证。

< ">选择启用CloudWatch Logs。这使您可以验证数据和Amazon CloudWatch日志来查看AWS DMS复制实例日志。

< ">在选择规则下,完成以下操作:

< ">   对于架构,选择输入架构。

< ">   对于架构名称,输入DMS_SAMPLE。

< ">   对于表名称,输入%。

< ">   对于操作,选择包括

< ">在转换规则下,完成以下操作:

< ">   对于目标,选择表。

< ">   对于架构名称,选择输入架构。

< ">   对于架构名称,输入DMS_SAMPLE。

< ">   对于操作,选择重命名为。

< ">选择创建任务。

< ">创建任务后,它会将CDC从您在CDC启动模式下提供的SCN迁移到Amazon RDS for Oracle数据库实例。您还可以通过查看CloudWatch Logs进行验证。以下屏幕截图显示了迁移的日志详细信息。

< ">< font-size: 18px;">数据验证

< ">AWS DMS进行数据验证,以确认您的数据已成功将源数据库迁移到目标数据库。您可以查看表统计信息页面,以确定在AWS DMS任务启动后发生的DML更改。在数据验证期间,AWS DMS比较源数据库与目标数据库中对应的每一行,验证这些行包含的数据相同。为此,AWS DMS发出适当的查询以检索数据。

< ">以下屏幕截图显示了表统计信息页面及其相关条目。

< ">您还可以对源数据库和目标数据库中的记录数进行计数和比较,以确认CDC数据已从源数据库复制到目标数据库。

< ">在计划的维护窗口中,可以使用以下代码关闭所有指向源数据库的应用程序,并启用触发器和外键约束:

< ">—Run the below statement to generate list of triggers to be enabled

< ">select‘alter trigger‘||owner||’.’||trigger_name||‘enable;’from dba_triggers where owner=’DMS_SAMPLE’;

< ">—Run the below statement to generate list of constraints to be enabled

< ">select‘alter table‘||owner||’.’||table_name||’enable constraint‘||constraint_name||’;’from dba_constraints

< ">where owner=’DMS_SAMPLE’and constraint_type=’R’;

< ">由于DMS不会在CDC期间从源数据库复制增量序列号,因此您将需要从源生成所有序列的最新序列值,并将其应用于目标Amazon RDS for Oracle数据库,以避免序列值不一致。

< ">现在,通过修改连接详细信息,将应用程序指向目标Amazon RDS for Oracle数据库。在启动应用程序之后,您应该看到现在已在目标Amazon RDS for Oracle数据库上建立所有应用程序连接。确认源数据库上不再存在连接后,可以停止源数据库。

< ">小结

< ">本博文演示了如何通过使用Oracle数据泵和AWS DMS将本地Oracle数据库迁移到Amazon RDS for Oracle数据库,同时最大程度地缩短停机时间甚至无停机。您可以使用AWS DMS及其CDC功能将关键数据库无缝迁移和复制到Amazon RDS。

< ">我们鼓励您尝试此解决方案,并充分发挥AWS DMS与Oracle数据库结合使用带来的所有优势。

本篇作者

Sagar PatelAmazon:Web Services专业服务团队的数据库专业架构师。他是数据库迁移专家,负责提供技术指导,并帮助Amazon客户将其本地数据库迁移到AWS。

Sharath Lingareddy:Amazon Web Services专业服务团队的数据库架构师。他提供使用Oracle、PostgreSQL、Amazon RDS的解决方案。他的专注的领域是本地数据库到Amazon RDS和Aurora PostgreSQL的同质和异类迁移。

Jeevith Anumalla:Amazon Web Services专业服务团队的Oracle数据库云架构师。他担任数据库迁移专家,帮助内部和外部Amazon客户将其本地数据库环境移至AWS数据存储。

使用 AWS DMS 以近乎零停机时间迁移 Oracle 数据库

上一篇:Azure支持API:以编程方式创建和管理Azure支持票证
下一篇:“平平无奇”的Shopify新手必备应用程序推荐系列


版权声明:以上主题为“使用 AWS DMS 以近乎零停机时间迁移 Oracle 数据库"的内容可能是本站网友自行发布,或者来至于网络。如有侵权欢迎联系我们客服QQ处理,谢谢。
相关内容
推荐内容
扫码咨询
    使用 AWS DMS 以近乎零停机时间迁移 Oracle 数据库
    打开微信扫码或长按识别二维码

小提示:您应该对本页介绍的“使用 AWS DMS 以近乎零停机时间迁移 Oracle 数据库”相关内容感兴趣,若您有相关需求欢迎拨打我们的服务热线或留言咨询,我们尽快与您联系沟通使用 AWS DMS 以近乎零停机时间迁移 Oracle 数据库的相关事宜。

关键词:使用,AWS,DMS,以近乎零停机

关于 | 业务 | 案例 | 免责 | 隐私
客服邮箱:sales@1330.com.cn
电话:400-021-1330 | 客服QQ:865612759
沪ICP备12034177号 | 沪公网安备31010702002418号