1、 Oracle RAC 环境数据备份与恢复实践 【导读】某企业因项目需要在Oracle RAC集群环境下,根据实际情况对Oracle数据库进行备份;使用生产环境的rman全备数据,进行恢复数据搭建测试环境。本文将详细介绍此案例中Oracle数据库rman全备份过程、Oracle RAC 环境下rman备份数据如何恢复至单机服务器。考虑到非常的实用,将实施经验分享给更多同行进行交流学习。【作者】焦育,从事系统运维8年,现就职于某大型车企公司信息部门,主要负责企业信息化基础建设与规划,主持数据中心系统运维工作,凭借Zabbix、grafana开源软件构建企业数据中心监控系统,精通linux操作系统
2、、VMware虚拟化软件、掌握oracle与mysql数据库的运维管理、熟练使用shell、Python语言。一、背景环境生产环境使用两台DELL R840服务器,安装了 linux centos 7.6操作系统,并配置多路径,使用 EMC untiy 作为共享存储,分配了2个1T LUN 存储数据库文件,1个500G LUN存放归档数据,3个30G LUN存放 OCR 、FALSH、GIMR数据。Oracle RAC 软件版本是19C 19.0.0.0.0。二、数据备份1、备份策略为保障oracle rac 集群数据安全,因项目组要求设计数据库备份方案。考虑到服务器RAC1与RAC2每台服务
3、器自带2T本地可用容量,每次全备产生约400GB数据文件。可将奇数天备份到RAC1,偶数天备份到RAC2,4*400GB=1.6TB,每台服务器可以备份4天的全量数据。空间非常的富余,不计划使用rman的增量备份,直接全量备份近8天数据,恢复也较为方便。2、备份过程在RAC1主机下执行,(RAC2同理)首先Oracle 数据库开启归档,归档模式下,才可以进行数据库的热备份、联机备份、手工备份等。非归档模式下,只能进行冷备份。当然我们rman备份是在线备份。如下图:接着,创建rman脚本目录创建备份执行脚本,并加入定时任务创建备份数据清理脚本, 并加入定时任务,只备份近4次数据,脚本会自动判断最
4、近一次rman备份是否成功,不成功将不删除备份数据。这里我调用了 zabora.sh 脚本判断rman备份状态,sql语句也比较简单。定时任务(RAC1)定时任务 (RAC2)记得重启定时任务创建rman执行脚本,用于被上述执行脚本调用3、测试验证第一次可手动执行备份任务,不等到凌晨自动执行查看日志log备份完成如下图:三、数据恢复因为本项目使用的是全备数据,无增量。恢复命令较简单。举例几个常用恢复操作命令。1、数据完全恢复2、表空间数据恢复四、OracleRAC集群迁移至Oracle单机服务器因项目组需要利用生产环境的真实数据,搭建测试环境,便于开发测试,测试环境没有必要搭建复杂的Oracl
5、e rac集群,占用资源多,就计划选择单机版Oracle,考虑到数据泵expdp、impdp效率较低(也尝试导入成功了,确实大量数据非常的慢,本项目400多GB的备份数据),决定使用Oracle rac下的rman备份数据恢复至单机Oracle。若考虑到极端情况下需要做迁移、恢复,又没有更多的Oracle rac所需资源,那迁移至oracle单机还是有必要掌握了解的。expdp impdp的方式是一种逻辑备份与恢复,不需要考虑Oracle环境基础架构,而rman备份与恢复是一种底层数据文件的备份,在由集群恢复至单机数据文件命名与路径是不相同的,在此过程中需要注意一下。首先,准备好Oracle单
6、机环境,开启归档模式,Oracle数据库的安装不是本文的重点,相信网上的安装资料非常的多。1、生成spfile参数文件登录到RAC1上将此文件复制到oracle单机上/u01/app/oracle/product/19.0.0/db_1/dbs/initecology.ora 并进行修改,目的是将Oracle rac环境下的设置改为单机环境:在Oracle单机上执行 SQL create spfile from pfile;2、恢复控制文件将Oracle rac环境下的全备份文件, 复制到oracle单机 /u01/backup/data /目录下,以下操作均是在Oracle单机环境下进行。备
7、份文件如下:3、 将备份数据注册到rmanrman环境下继续执行:4、数据还原恢复执行list backup of database; 根据备份信息,进行文件重命名。Oracle rac 环境使用的是ASM管理磁盘,目录与单机oracle不同,因此在还原恢复时候,需要先将备份文件的ASM文件路径,修改为Oracle单机环境路径。注意:此命令行要一起执行还原恢复,最好放入文本中执行5、修改数据库日志文件第三步已经完成了数据库的还原恢复,备份数据日志文件使用的是rac环境目录,需要更修改为单机版本。6、 删除无效日志组7、删除 undo表空间查看undo表空间,并删除节点2(在此不使用)的undo
8、表空间8、创建temp表空间9、数据库更改IP地址数据库里的配置文件,还是RAC集群地址,因此要改为Oracle单机服务器的IP监听IP更改:vim /u01/app/oracle/product/19.0.0/db_1/network/admin/listener.ora远程连接IP更改:vim /u01/app/oracle/product/19.0.0/db_1/network/admin/tnsnames.ora数据库执行:至此数据库已恢复完毕,可重启监听与数据库,进行登录验证数据恢复情况,经实践检验与原库保持一致,并且恢复效率非常的高,用时约1小时,满足公司对故障快速恢复的要求。六、
9、实践总结此次经过摸索实践、因地制宜地对公司Oracle RAC 集群进行了数据备份,确保数据库备份安全,当发生数据库灾难或文件损坏时,可及时根据上述操作文档进行备份数据恢复,保证数据库能备份能恢复,系统运维更加健全。针对我司特殊场景需要将Oracle RAC集群环境备份数据,恢复至单机Oracle上,或是数据库迁移,提供了可靠的解决方案,同时将此方法分享给各位同行进行交流学习。实践过程中,类比数据泵 expdp、impdp备份方式,rman备份恢复效率更高,确实也印证了此观点 。实践出真知, 本人也在此实践中获益匪浅,知识是用来传递与分享的,希望能看到读者们、技术大牛们更多更好的文章,感谢阅读!-全文完-