用友NC财务系统上云实战:阿里云Oracle ASM存储与RAC服务器扩容及数据库迁移经验分享
本文分享了用友NC财务系统成功迁移上云的经验,主要涉及阿里云Oracle ASM存储扩容、阿里云ESC RAC服务器扩容、阿里云Oracle RAC数据库迁移等相关技术。我们来看看吧!
01
项目背景
本次项目,我司主要负责客户Oracle RAC数据库的迁移,应用系统由客户专门团队负责。该系统建设于2017年,根据企业集团的战略规划,所有业务系统全部迁移到云端,财务NC化自然是必然的。
云下金融数据库基于Linux x86 64位环境构建,采用Oracle 11g RAC集群数据库架构,64C128G配置,数据量超过1T。
客户原本打算让我们在阿里云上新建一个RAC,通过物理备份RMAN迁移的方式迁移到云端。但考虑到成本,客户计划采用逻辑迁移的方式将数据库导入到现有的一套云RAC中。原有业务系统的RAC也由我公司建设并运营。配置为16C64G,数据量100G左右。
02
云解决方案
我公司作为技术专家给客户的建议:
1)复用原有云RAC环境,无需购买新服务器。
2)云上RAC扩展。新购NC财务1.5T共享数据盘和0.5T归档盘,并将两套服务器升级为64C128G;
3) 评估停机时间。如果采用逻辑导入迁移,再加上周边业务系统的调试和参数修改,总共需要停机2天。企业无法承受如此长的停机时间。因此改用RMAN迁移,在扩容后的RAC环境中创建新的数据库。采用RMAN增量迁移方式,数据库割接时间几乎为0,剩下的就是应用调整时间,从原来的两天缩短到几天。小时;
4)建议采用两次迁移方式,提前一周完成数据库迁移,基于云数据库环境调整应用,并测试应用可用性,这样可以缩短第二次正式迁移的应用调整时间。
最终的云架构如下:
经过详细审核,客户最终采纳了我司提出的整体迁移实施方案。
03
实施过程
下面是具体的实现过程:
共享磁盘扩容
在阿里云控制台购买ESSD共享盘,挂载到两台ECS上,使用udev添加ASM盘。原业务系统的数据盘为DATA,归档盘为ARCH。新创建的磁盘名为NCDATA和NCARCH,用于存储新的NC系统数据。
弹性云服务器升级
ECS升级在阿里云控制台进行,需要关机重启。客户的业务系统非常重要,不能随意关闭。 RAC架构的优势显现出来。通过逐一升级配置,可以保证业务连续性。
整个升级流程如下:
1)节点1,停止数据库和CRS;
2)ECS控制台停止节点1,选择64C256G配置进行升级(阿里云可用区64C128G配置已售空)。当节点1的ECS宕机时,VIP和SCAN IP自动漂移到节点2,因此业务自动切换到节点2。
3)启动节点1,使用crsctl check crs和crsctl stat res -t检测集群已经启动,启动实例1数据库实例,使用crsctl stat res -t检查资源是否正常,以及node的升级1已完成。然后在节点2上重复节点1的升级过程。
迁移验证
1) 参数文件。参数文件非常重要。通过create pfile导出原库配置文件,并修改关键配置参数以适应新环境。注意目录,注意扫描ip,注意集群databae改为false等。
2)将数据备份到云端。前一天的备份文件已传输至云端。备份文件包含1T数据。通过专线传输数据花了4个多小时。这也是迁移过程中最耗时的步骤。
3)数据库恢复。在节点1上操作时,需要关注ORACLE_SID。由于RAC环境中有一套生产库,因此在操作过程中一定要反复确认操作对象。先创建spfile文件,同时在初始文件中构建文件系统和ASM存储涉及的目录结构。然后在nomount下恢复控制文件,在mount下恢复数据库,然后恢复数据库,然后打开resetlogs等,都是常规操作。恢复数据库脚本必须更改新的asm存储数据目录,否则将恢复到原生产库的数据目录,如“set newname for datafile 1 to '+NCDATA/orcl/datafile/system.dbf'; ”所有数据文件 所有临时文件都必须更改。再次强调,如果有生产库,恢复是一个高风险的操作。请务必检查 sid 环境和恢复脚本。
4) 将数据库添加到RAC集群。修改cluster databae参数为true,使用srvctl添加数据库,断开单库后,srvctl start database -d nccdb -o open启动,使用crsct stat可以查看实例。
交付到应用程序测试时,数据库已完成,一路上没有出现任何意外。 4路数据库恢复耗时不到2小时,瓶颈是NAS数据读取(备份介质在NAS上)。阿里巴巴的ESSD共享存储性能非常高。
正式移民
第一次迁移验证了整个迁移方案的可行性,也验证了应用系统上云后的功能。正式迁移比较简单,第一次迁移后参数文件就都有了。
同样在节点1上操作,确保sid已设置为nccdb1。
1)删除第一次迁移恢复的数据库。它也可以被删除,并在第二次恢复时被覆盖。删除过程如下。删除RAC库时有几点需要注意。
a) 环境变量,sid,不要写错,一定要再次确认;
b) 修改 cluster_database=FALSE;
c) 停止数据库 srvctl stop database -d nccdb,两个节点都会停止;
d) 确认instance_name,然后删除数据库;
e) srvctlremovedatabase-dnccdb删除库的集群信息。步骤5无需执行。
2)修改spfile参数cluster_database=FALSE后,检查ASM目录结构,看nccdb是否存在。如果不存在,则需要重建;
3)启动数据库到nomount状态并恢复控制文件后,恢复databasese,恢复数据库和恢复档案,最后打开resetlogs等,一路顺利。
4)修改spfile参数cluster_database=true后,关闭单库,srvctl启动数据库 -d nccdb -o open启动,检查集群资源,新数据库存在,检查日志是否正常。最后,不要忘记替换临时文件。迁移后原来的临时文件将失效。
至此,阿里云oracle RAC在用友NC金融系统上就完成了。
04
迁移到云的价值
1)实现了在阿里云上托管RAC架构下的多个数据库的案例,为客户节省了云资源成本;
2)从技术上解决客户无法接受的停机问题。使用RMAN增量迁移,降低了应用人员迁移业务数据的复杂度,节省了迁移时间,最终缩短了业务停机时间。