APP下载

基于DataGuard和RMAN的Oracle数据库容灾方案

2014-04-18潘传迪PANChuandi

医院管理论坛 2014年1期
关键词:数据文件容灾日志

□潘传迪PAN Chuan-di

数据已经渗透到各行各业,企业信息化首先要确保这些数据的安全,常采用的方法是数据备份和系统容灾[1]。数据备份的目的是为了在系统数据崩溃时能够快速地恢复数据,是一种初级和简单的容灾方案。对于IT而言,容灾就是提供一个能防止各种灾难的计算机信息系统。当灾难发生时,不仅要求确保数据安全,而且能在尽可能短的时间内恢复系统正常运行。容灾是一个系统工程,而不仅仅是技术。

容灾系统基本概念

1.主要技术指标。从技术上看,衡量容灾系统有两个主要技术指标,即RPO和RTO。RPO(Recovery Point Object)即恢复点目标,主要代表业务系统所能容忍的数据丢失量。不同的系统,对RPO的要求不同,对于一些重要的系统,不允许出现数据丢失,要求RPO=0,即数据零丢失[2]。RTO(Recovery Time Object)即恢复时间目标,主要代表所能容忍的业务停止服务的最长时间,也就是从灾难发生到业务系统恢复服务所需要的最短时间周期,大部分7天*24小时服务的业务系统要求RTO越小越好。

2.常见容灾等级。通常将容灾分成以下四个等级,即:

第0级:本地备份,本地保存。

第1级:本地备份,异地保存。

第2级:即热备份站点备份。在异地建立一个热备份点,通过网络进行数据备份。正常情况下,备份站点不承担业务,当出现灾难时,备份站点接替主站点的业务。

第3级:即活动备援中心。结构与第2级相似,主、从系统不再是固定的,而是互为对方的备份系统。这种级别的备份根据实际要求和投入资金的多少,又可分为两种:(1)两个数据中心之间只限于关键数据的相互备份;(2)两个数据中心之间互为镜像,即零数据丢失。

3.容灾系统数据复制策略类型。根据生产数据中心和容灾数据中心之间复制数据的时间间隔差异,将容灾系统分成同步系统、准同步系统、异步系统和时间点系统四种。其中同步系统安全性要求高,要求中心之间距离短,对系统性能影响大。时间点系统安全性要求低,允许较长的中心间距离,对系统性能影响小。准同步系统和异步系统的安全性要求、距离要求和对系统性能影响介于同步系统和时间点系统之间。

4.典型的异地容灾方式。典型的异地容灾方式包括以下几种:

4.1 主机软件层次。如Symantec(Veritas)公司的VVR,它基于卷(逻辑磁盘)进行数据复制,复制的数据可以是数据库中的数据(文件方式或裸设备方式)和关键业务系统中的文件。

4.2 存储阵列层次。如EMC公司的SRDF,即远程数据镜像技术,通过两个存储系统间的磁盘镜像实现容灾。

4.3 网络层次。如EMC RecoverPoint,其前身是Kashya容灾方案,该方案是基于SAN网络的持续数据保护方案,能够同时动态支持同步、准同步、异步和时间点四种复制策略。

4.4 数据库层次。如DSG RealSync,Quest SharePlex,它们实现原理相同,都是通过对oracle log信息进行分析,生成交易指令后传输到容灾端进行重新装载的方式来实现容灾的。

无论采用哪种容灾方式,硬件和软件资金投入都很大,且对系统性能多少都会有影响,有些方式还无法实现RPO=0和较小的RTO。

Oracle数据库恢复过程

图1是Oracle数据库恢复过程示意图。数据库必须运行在归档模式,通过冷备份(关闭数据库后进行备份)或热备份(不关闭数据库直接进行备份)方式定期备份Oracle数据文件、重做日志文件、控制文件。一旦数据库出现介质故障,可将最近正常备份的Oracle数据文件、重做日志文件、控制文件同时覆盖故障文件,并通过归档日志(Archive log)进行数据库完全或不完全恢复。

图1 Oracle数据库恢复过程

基于DataGuard的Oracle数据库容灾方案

Oracle DataGuard只是在软件上对数据库进行设置,不需要额外购买任何组件,能够在对主数据库影响很小的情况下,实现主备数据库的同步。图2是Oracle DataGuard架构图。Oracle通过将primary DB(database)的重做日志或归档日志传输并应用到standby DB来使standby DB与primary DB保持数据同步。当primary DB出现问题时可以将生产系统快速地切换到standby DB[3-4]。

可以将重做日志直接从primary DB同步写到standby DB来完成RPO=0的灾难保护,这会给primary DB带来一定的性能损失。也可以将归档日志从primary DB异步写到standby DB来使primary DB在极少性能损失的前提下,最小化地减少数据丢失。如果重做日志数据到达standby DB后快速应用到standby DB,则在primary DB出现问题时可以快速地failover 到standby DB。然而,如果延缓一定时间后再应用重做日志数据,可以避免primary DB的错误快速地传播到standby DB中。从Oracle 10g开始,Oracle Dataguard已支持实时应用 (Real-Time Apply,RTA)确保主备数据库数据一致性,即在网络状况良好时,Primary DB与Standby DB之间处于最大数据保护模式(Maximum Protection Mode),当网络状况不良时,Primary DB与Standby DB自动调整为最大性能模式(Maximum Performance Mode),从而不影响业务数据的正常存储访问。Oracle11g Active Dataguard在数据实时应用的同时,Standby DB可提供查询及报表服务。

Oracle归档日志文件本地存储,控制文件、数据文件和重做日志文件存储在专用存储设备上,如DAS、SAN。为确保系统安全,生产系统和备用系统常采用独立的不同存储设备。系统运行在归档且可以相互切换模式,即系统可以从生产环境切换到备机环境,也可从备机临时运行环境切换到生产运行环境。

图2 Oracle DataGuard架构图

Oracle Dataguard swithover是在primary DB与Standby DB均正常运行的情况下,进行主备系统切换测试或进行primary DB维护时,计划内的数据库系统切换。以IBM AIX操作系统为例,DataGuard Switchover具体操作步骤如下。

Switchover状态切换时,如生产系统是RAC环境,须关闭其它节点,只留一个节点。以下SQL提示符均为sqlplus “/as sysdba”登录后的操作。

先在primary DB上操作,将primary切换到standby模式:

a.首先查看切换状态。switchover_status的值如果是To standby,可以直接switchover,如果是sessions active,则需要在switchover的命令后面加上 with session shutdown。

SQL>select switchover_status from v$database;

b.执行切换主库到备库。

SQL>alter database commit to switchover to physical standby with session shutdown;

c.关闭数据库。

SQL>shutdown immediate;

d.启动数据库到mount状态。

SQL>startup mount;

e.只读方式打开数据库并切换到恢复状态。

SQL>alter database open read only;

SQL>recover managed standby DB using current logfile disconnect;

然后在standby DB上操作,将standby切换到primary模式。

a.查看切换状态。switchover_status的值如果是To primary,可以直接switchover,如果是sessions active,则需要在switchover的命令后面加上with session shutdown。

SQL>select switchover_status from v$database;

b. 执行切换备库到主库。

SQL>alter database commit to switchover to primary with session shutdown;

c.关闭数据库。

SQL>shutdown immediate;

d.打开数据库。

SQL>startup;

Oracle Dataguard Failover是Primary DB崩溃,修复时间不可预计或超出业务可承受的中断时长,而强行启用standby DB的方式。Failover时操作语句均在备机上执行,以IBM AIX操作系统为例,DataGuard Failover具体操作步骤如下。

a.停止standby DB日志自动应用。

SQL>alter database recover managed standby DB cancel;

b.如果Dataguard 运行在最大性能模式(Maximum Performance Mode),需手工启用尚未应用的数据库日志。

SQL>recover standby DB until cancel;

c.强制激活standby DB。

SQL>alter database activate standby DB;

d.关闭及重启数据库。

SQL>shutdown immediate;

SQL>startup;

e.以root用户将业务系统服务IP添加到相关网卡。

# ifconfig enX X.X.X.X netmask X.X.X.X alias

# ifconfig enX X.X.X.X netmask X.X.X.X alias

基于RMAN的Oracle数据库容灾方案

RMAN(Recovery Manager)是一种用于备份、还原和恢复Oracle数据库的系统自带工具。RMAN支持ORACLE8以上版本。它可以备份整个数据库或数据库部件,如表空间、数据文件、控制文件、归档日志文件等。可以用来执行完全或不完全的数据库恢复[5]。

图3是基于RMAN的Oracle数据库容灾方案架构图。生产系统Oracle RAC数据库各节点共享数据文件、控制文件,并存储于Storage A中,且各节点必须至少有两组重做日志文件,每组重做日志组设两个重做日志成员文件,分别存储在Storage A和Storage B中,重做日志组中的两个重做日志成员由Oracle进行自动镜像同步,如果Storage B出现故障,不会影响生产系统正常运行。生产系统Oracle RAC数据库各节点归档日志文件本地存储。

图3 基于RMAN的Oracle数据库容灾方案架构图

本方案特点:(1)可以实现RPO=0;(2)RTO较小;(3)可以在备机上进行基于时间点或SCN的不完全数据恢复,而不影响生产数据库的运行;(4)操作相对简单;(5)投入小,性价比高。

以IBM AIX操作系统为例,具体步骤如下:

第一,定期备份(Backup)。用Oracle RMAN工具定期(如每周日凌晨2:00)备份生产数据库全部数据文件及控制文件,并用操作系统命令定期清理过期的归档日志文件,同时执行RMAN的crosscheck指令整理控制文件中各实例(thread)归档日志信息。上述指令编写成脚本,由操作系统自动执行。

第二,定期还原(Restore)。将生产系统备份目录通过网络文件系统共享给备用主机(Standby),使备用主机能正常读取RMAN备份数据。用Oracle RMAN工具定期(如每周日晚9:00)恢复最新备份的数据。

第三,灾难恢复(Disaster Recovery)。只有在Storage A或生产系统数据库故障一时难以修复,需启用备用主机时,才进行此步数据恢复操作。数据恢复后,生产系统业务数据库将切换到备用主机上运行。恢复操作步骤如下:

a.关闭生产系统各节点数据库及HACMP集群软件。

SQL>shutdown abort

# smitty clstop

b.在备机上导入logvg卷组,改变裸设备属性。

# importvg-V 58-y logvg hdisk3

# chown oracle:dba /dev/*db_*

c.在备用机上挂载生产系统各节点归档日志网络文件系统。

# mount /backup1

# mount /backup2

# mount /backup3

d.在备用机上恢复数据,加入临时表空间临时数据文件。

SQL>startup mount

$ rman target / nocatalog

RAMN>recover database;

SQL>alter database open resetlogs;

SQL>ALTER TABLESPACE TEMP ADD TEMPFILE’/dev/rdb_temp’ SIZE 419430400 REUSE AUTOEXTEND OFF;

e.修改主机IP, 修改$ORACLE_HOME/network/admin/listener.ora监听文件中IP地址为修改后的IP,启动监听器。

结束语

基于DataGuard 和RMAN的两种Oracle数据库容灾方案目前在我院信息系统中都得到很好的应用。我院HIS使用的数据库为Oracle 11G RAC,采用基于DataGuard的容灾方案,生产系统和异地灾备系统采用独立SAN存储,RPO=0,RTO约10分钟,异地灾备系统平时还用于大数据量历史数据统计和查询。我院门户网站系统使用的数据库为Oracle 9i RAC,采用基于RMAN的容灾方案,生产系统和异地灾备系统采用独立SAN存储,RPO=0,RTO约15分钟。目前两个系统运行良好,不仅确保了系统可用性、可靠性和安全性,还节约系统投资,性价比很高。

1 刘晓辉.医院信息系统中灾备系统的设计与实现[J].医疗设备信息,2007,22(1):22-24

2 李峰,刘晓洁,林翰翮.基于Oracle数据库的容灾系统[J].计算机工程与设计,2011,32(11):3573-3576,3581

3 Oracle.Introduction to Oracle Data Guard[EB/OL]. http://docs.oracle.com/cd/E11882_01/server.112/e25608/concepts.htm

4 眭晓欣.基于Oracle数据库应用系统的容灾性分析研究[J].电脑知识与技术,2010,(24):6676-6678

5 Oracle.Using RMAN to Back Up and Restore Files [EB/OL]. http://docs.oracle.com/cd/E11882_01/server.112/e25608/rman.htm

猜你喜欢

数据文件容灾日志
一名老党员的工作日志
扶贫日志
高速公路收费中心容灾备份系统建设方案分析
雅皮的心情日志
基于表空间和数据文件探讨MIS中数据库架构设计
数据文件恢复专题问答
数据文件安全管控技术的研究与实现
游学日志
关于建筑企业容灾备份系统方案的探讨
基于数据容灾技术在企业信息系统中的应用研究