时间: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数据存储。 |
上一篇:Azure支持API:以编程方式创建和管理Azure支持票证
下一篇:“平平无奇”的Shopify新手必备应用程序推荐系列
基于对传统行业渠道的理解,对互联网行业的渠道我们可以下这样一个定义:一切...
小米应用商店的后台操作和苹果是比较相似的,因为都能填写100字符关键词,允许...
小米的规则目前是在变更中的,但是根据经验小米的搜索排名评分的高低是个很重...
为了恰饭,有时候是要接入一些广告的,所以FB也专门有一个广告的SDK,这就是A...
在 2018 年于旧金山举行的游戏开发者大会上,Amazon Web Services (AWS) 曾宣布,目前世...
关于Facebook Audience Network如何收款的问题,其实官方已经给了详细的步骤。本文主要...
本文介绍了Audience Network对广告载体的质量检查,以及它重点广告形式需要注意的问...
随着iOS开发,作为开发者或公司需要针对iOS App开发涉及的方方面面作出对应的信息...
Facebook和谷歌对出海企业广告渠道都很熟悉,但事实上,在国外还有一些渠道也很...
卖家从做号的第1分钟开始,就一定要想好变现路径是什么?一定要以变现为目的去...
小提示:您应该对本页介绍的“使用 AWS DMS 以近乎零停机时间迁移 Oracle 数据库”相关内容感兴趣,若您有相关需求欢迎拨打我们的服务热线或留言咨询,我们尽快与您联系沟通使用 AWS DMS 以近乎零停机时间迁移 Oracle 数据库的相关事宜。
关键词:使用,AWS,DMS,以近乎零停机