灾备设计.docx
《灾备设计.docx》由会员分享,可在线阅读,更多相关《灾备设计.docx(15页珍藏版)》请在冰豆网上搜索。
灾备设计
XXXX灾备方案
实施建议书
作者:
XXXX
创建日期:
2009-12-17
更新日期:
2009-12-17
参考文档:
版本:
V1.0
文档控制
修改记录
日期
作者
版本
修改记录
2009-12-17
1.0
创建报告
审阅
姓名
职位
分发
拷贝No.
姓名
单位
1
2
3
4
目录
文档控制ii
读者1
情况简介1
现行灾备方案讨论1
项目实施评估4
DataGuardforWindows2003Enterprise32bit实施细则5
一在主库和备库服务器上安装ORACLE软件6
二在备库服务器上安装ORACLE软件6
三修改主库参数6
四修改主库为归档模式6
五备份数据库6
六备库环境准备6
七开启DG7
DG测试与维护工作8
一DG测试8
二管理与维护操作9
读者
此实施建议书仅供下列读者使用:
∙XXXX
∙AAA
情况简介
随着企业信息化的建设,对于关键数据的保护也越来越重要。
试想,当数据库由于种种原因出现问题,甚至宕机,此时,业务系统也随之停顿,这种情况给企业带来的经济和信誉的损失是非常巨大的。
因此,在一切正常的时候就必须使用一种合适的灾备方案,防患于未然。
当然,随着对数据损失性的要求越高,那么必须投入的成本也越大。
此时就要在两者间寻找到一个平衡。
现行灾备方案讨论
如果管理员由于一时疏忽或者网络问题导致归档没有及时备份,备库没有及时恢复,那么在主库出现问题的时候,不能及时的切换到备库,导致不必要的损失。
因此,实施一个灾备方案是非常有必要的,而且可以说是刻不容缓的。
当前市场上的灾备软件以及方案非常丰富,总的来说可以分为这几类:
基于存储(Storage-Based)、基于服务器(Host-based)、基于存储交换机(SAN-Based)以及基于数据库/软件应用、基于oracle数据库自带DataGuard等。
这里,我们选取使用DataGuard方案进行讨论。
首先需要安装数据库10g,随后实施DataGuard。
Oracle10g是第一个专门设计用于网格计算的数据库,也是当前最稳定的Oracle数据库产品。
在管理企业信息方面最灵活和最经济高效。
在尽可能提高服务质量的同时削减了管理成本。
除极大地提高质量和性能以外,Oracle10g还通过简化的安装、大幅减少的配置和管理需求以及自动性能诊断和SQL调整,显著地降低了管理IT环境的成本。
这些及其他自动管理功能提高了DBA和开发人员的生产效率。
这里我们看一下有关DataGuard的资料。
在OracleEE版(企业版)里面,本身就集成了DataGuard,它是管理、监控和自动化软件的基础架构。
由它创建、维护和监控一个或多个备用数据库,以保护企业数据结构不受故障、灾难、错误和崩溃的影响。
DataGuard使备用数据库保持为与生产数据库在事务上一致的副本。
这些备用数据库可能位于距生产数据中心数千英里的远程灾难恢复站点,或者可能位于同一城市、同一校园乃至同一建筑物内。
当生产数据库由于计划中断或意外中断而变得不可用时,DataGuard可以将任意备用数据库切换到生产角色,从而使与中断相关的停机时间减到最少,并防止任何数据丢失。
DataGuard提供了一个高效和全面的灾难恢复和高可用性解决方案。
易于管理的转换和故障切换功能允许主数据库和备用数据库之间的角色转换,从而使主数据库因计划的和计划外的中断所导致的停机时间减到最少。
使用备用数据库,DataGuard可保证即使遇到不可预见的灾难也不会丢失数据。
备用数据库提供了防止数据损坏和用户错误的安全保护。
主数据库上的存储器级物理损坏不会传播到备用数据库上。
同样,导致主数据库永久损坏的逻辑损坏或用户错误也能够得到解决。
最后,在将重做数据应用到备用数据库时会对其进行验证。
DataGuard可有效利用系统资源。
备用数据库表使用从主数据库接收到的重做数据进行更新,并且可用于诸如备份操作、报表、合计和查询等其他任务,从而减少执行这些任务所必需的主数据库工作负载,节省宝贵的CPU和I/O周期。
使用逻辑备用数据库,用户可以在模式中不从主数据库进行更新的表上执行数据处理操作。
逻辑备用数据库可以在从主数据库中对表进行更新时保持打开,并可同时对表进行只读访问。
最后,可以在维护的表上创建额外索引和物化视图,以获得更好的查询性能和适应特定的业务要求。
可以在用户原始的Oracle数据库服务器基础上增加1台Oracle灾备服务器,这2台机器间用高速网络连接起来,利用OracleDataGuard实现灾难备份。
如下图所示:
当主节点出现灾难(或主节点出现大范围问题)的情况下,这时可用灾备节点接管主节点,从而在最短的时间内恢复业务系统。
如下图所示:
DataGuard灾难备份解决方案的特点就是灾备节点零数据丢失。
在主节点(Primary)/灾备节点(Standby)配置下,所有的Oracle归档日志发送到灾备节点,这使灾备节点的数据保持着更新。
但是,如果主节点数据库意外关闭,Oracle联机日志将会丢失,因为它们尚未归档并发送到灾备节点,这使得主节点和灾备节点数据库之间会有一个差异。
通过设置LGWR将重做日志数据写到本地磁盘的同时将数据发送到灾备节点数据库,可以实现灾备节点零数据丢失(standbyzerodataloss)。
这种方法从本质的角度讲提供了远程重做日志镜像。
通常,DataGuard有两种类型,分别为"物理备机(PrimaryStandby)"和"逻辑备机(LogicalStandby)"。
物理备机(PrimaryStandby):
主备库之间物理结构,逻辑结构保护一致。
通常情况下备用库通过主库传输过来的归档日志做恢复。
基于"块对块"方式。
与主数据库相同。
物理standby等同于生产库。
物理standby能以readonly方式打开(或者在flashback数据库下以"读写方式打开")。
物理standby一旦以"读写"方式打开,备用库将不会从主数据库接受重做数据。
只有当备库flashback到过去的点,当备用库flashback到"读写"打开时间点前的状态时,DataGuard会自动同步备库与主库。
才能回复standby角色。
逻辑备机(LogicalStandby):
只保证逻辑结构与主库一致。
备用库要处于打开状态,通过从主库归档日志文件中提取出来的SQL语句做恢复。
创建时,与物理standby一样,使用主库copy,逻辑备库通过执行SQL语句来更新。
DataGuard转换日志文件中的数据为SQL语句,然后在逻辑standby上执行SQL语句.因为逻辑standby是通过SQL语句来实现数据同步,那么在同步期间其必须保持打开状态。
同时,DataGuard还提供三种保护方式,分别为
1.最大保护模式
这种模式主备库之间数据是同步的。
即主库提交的同时,备库会做相应的恢复。
最大限度的保证了数据完整性。
不允许数据的丢失。
如果主备库之间网络,或者备库出现问题会直接影响主库操作。
导致主库当机。
2.最大可用性模式
这种模式和"最大保护模式"基本上差不多。
正常情况下,主备库之间是同步的。
当网络或者备库出现问题时,不会影响到主库的当机,主库会自动转换库"最大性能模式"模式,等待备库可用时,将归档传输到备库做恢复。
可以把这种模式理解为"最大保护模式"和"最大性能模式"两种模式的中间体。
3.最大性能模式
这种模式保证主库性能最大化,主备库之间数据是异步传输的。
即,主备日志归档以后才会传输到备用库,在备库上使用归档日志文件做恢复操作。
可以看到,OracleDataGuard采用各种手段,以保证数据零丢失为目的,尽最大程度的保证数据库7*24小时高速、可靠的运行。
项目实施评估
现在评估一下整个方案具体实施的步骤以及时间
安装Oracle10g
前提保证:
由于操作系统会影响到数据库安装的进度,因此为了保证能尽快顺利的安装数据库,必须确定对方已经安装好操作系统
Oracle10g成功安装并正常运行,将原先导出的数据导入10g
配置DataGuard
前提保证:
做DataGuard的备机安装好操作系统,做好一切设置,并保证挂载的存储可以使用。
DataGuard顺利安装后进行DataGuard后期测试
实施时间:
1天-2天
在整个项目期间,我们会派遣1-2名资深工程师来现场参与,并配合相关人员一起完成整个项目的实施。
DataGuardforWindows2003Enterprise32bit实施细则
环境概述
Primary环境(sid,主机名等信息根据用户需求变动)
服务器主机名
primary
操作系统型号
IBMX3650M2
PartNumber:
7947-I05
Cpu型号
XeonE55042.0GHzx2
操作系统
Windows2003Serverx32R2EntSP2
IP地址(eth0)
192.168.200.1
内存容量
16G
SID
FBHIS
数据库名称
FBHIS
StandbyDB环境(sid,主机名等信息根据用户需求变动)
服务器名
StandbyDB
操作系统型号
IBMX3650M2
PartNumber:
7947-I05
Cpu型号
XeonE55042.0GHzx2
操作系统
Windows2003Serverx32R2EntSP2
服务器主机名
fbbackup
IP地址(eth0)
192.168.200.5
内存容量
16G
SID
fbhispdg
数据库名称
FBHIS
一在主库和备库服务器上安装ORACLE软件
1、在主服务器上安装oracle软件,Oracle10g10.2.0.4
2、建库,并且导入数据
二在备库服务器上安装ORACLE软件
只安装软件,不要创建数据库。
ORACLE软件版本和主库保持一致,都为Oracle10g10.2.0.4。
三修改主库参数
在主库执行如下操作:
修改主库DATAGUARD的参数
四修改主库为归档模式
如果主库没有启用归档,则还必须停止数据库后,启用归档,然后再次启动数据库。
但此例中,数据库已经启用归档,所以无需此步骤。
五备份数据库
备份操作在primary上执行。
同时备份primary库以及生成备库控制文件。
以防止在实施DataGuard时遭遇意外导致源库毁坏。
如果出现这种情况,只需要把备份恢复即可,这样可以大大节省实施时间。
六备库环境准备
1.修改备库hosts
2.在备库添加指向主库的tnsnames
3.配置备库的监听
4.在备库创建相关目录
包括adump,bdump,cdump,udump及数据文件目录等,参考前面的列表。
5.拷贝主库的密码文件到备库上
6.创建实例
如果在Windows机器上,则还需要创建实例,可使用oradim命令。
7.设置备库参数文件
从主库节点上根据spfile创建一个pfile文件,并传到备库上。
8.把备库启动到nomount状态
9.拷贝主库文件到备机相应路径处,保证主备服务器的数据库所在路径一致。
七开启DG
1.把备库至于恢复状态
刚做好恢复后,备库还需要一段时间执行内部操作,所以要等待一段时间后执行以下命令。
2.在备库添加standbyredolog
Standbyredolog比archivelog方式有更大的优势,且在最大保护、最大可用、实时恢复的情况下必须有standbyredolog。
Standbyredolog的组数一般为(N+1)*thread#(N分别为每个thread#的联机日志组数)。
3.在standby上创建tempfile
第2步做好后,定期查看备库上的alert.log,会发现备库会陆续使用前面copy过来的所有归档日志进行数据库的恢复。
等待一段时间,让备库把所有的归档日志应用后再进行alterdatabaseopenreadonly操作。
不然会报错,因为redolog还没有全部apply。
4.修改primary节点上的参数
如果修改,修改后请重启数据库使参数生效,或者可节点运行以上命令(去掉scope=spfile,让值在memory中生效)让其立即生效。
重启数据库
运行好上述命令后,进入sqlplus查看修改参数的值。
5.切换日志,验证同步效果
在Primary节点上执行
SQL>altersystemswitchlogfile;
Systemaltered.
SQL>selectmax(sequence#)fromv$archived_log;
MAX(SEQUENCE#)
--------------
1228
在Standby节点上执行
SQL>selectmax(sequence#)fromv$archived_log;
MAX(SEQUENCE#)
--------------
1228
也可以在所有节点执行切换日志操作后,在备库存放归档日志目录中查看归档日志情况,看看是否有相应的日志产生。
DG测试与维护工作
一DG测试
在主库执行如下操作
SQL>createtabletst_tab
2(numvarnumber(5,0))
3tablespaceusers;
Tablecreated.
SQL>begin
2foriin1..5
3loop
4insertintotst_tabvalues(i);
5endloop;
6commit;
7end;
8/
PL/SQLproceduresuccessfullycompleted.
SQL>altersystemswitchlogfile;
Systemaltered.
SQL>select*fromtst_tab;
NUMVAR
----------
1
2
3
4
5
5rowsselected.
SQL>
等待一段时间,让备库apply归档日志后,然后在备库执行如下操作
SQL>alterdatabaserecovermanagedstandbydatabasecancel;
Databasealtered.
SQL>alterdatabaseopenreadonly;
Databasealtered.
SQL>select*fromtst_tab;
NUMVAR
----------
1
2
3
4
5
5rowsselected.
SQL>alterdatabaserecovermanagedstandbydatabasedisconnectfromsession;
Databasealtered.
二管理与维护操作
1.查看归档日志是否已经传过去并应用
可以通过查看primary机器和standby机器上的v$archived_log确定归档日志是否已经传过去。
可以通过查看standby机器上的alert日志,可以确定日志是否应用。
同上面的例子。
2.启动standby
SQL>conn/assysdba
SQL>startupnomount;
SQL>alterdatabasemountstandbydatabase;
SQL>alterdatabaserecovermanagedstandbydatabasedisconnectfromsession;
3.停止standby
SQL>alterdatabaserecovermanagedstandbydatabasecancel;
SQL>shutdownimmediate;
4.切换到只读模式
/*先取消redo应用*/
SQL>alterdatabaserecovermanagedstandbydatabasecancel;
Databasealtered.
/*然后打开数据库*/
SQL>alterdatabaseopenreadonly;
Databasealtered.
5.切换回管理恢复模式
SQL>selectstatusfromv$instance;
STATUS
------------
OPEN
SQL>alterdatabaserecovermanagedstandbydatabasedisconnectfromsession;
Databasealtered.
SQL>selectstatusfromv$instance;
STATUS
------------
MOUNTED
6.DG模式切换
/*先取消redo应用*/
SQL>alterdatabaserecovermanagedstandbydatabasecancel;
Databasealtered.
/*然后打开数据库*/
SQL>alterdatabaseopenreadonly;
Databasealtered.
/*查询StandbyDB处于哪种模式。
现处于最大性能模式,*/
SQL>selectprotection_mode,database_rolefromv$database;
PROTECTION_MODEDATABASE_ROLE
------------------------------------
MAXIMUMPERFORMANCEPHYSICALSTANDBY
/*切换成最大可用性模式*/
SQL>alterdatabaserecovermanagedstandbydatabasedisconnectfromsession;
Databasealtered.
SQL>alterdatabasesetstandbydatabasetomaximizeavailability;
Databasealtered.
SQL>alterdatabaserecovermanagedstandbydatabasecancel;
Databasealtered.
SQL>alterdatabaseopenreadonly;
Databasealtered.
SQL>selectprotection_mode,database_rolefromv$database;
PROTECTION_MODEDATABASE_ROLE
------------------------------------
MAXIMUMAVAILABILITYPHYSICALSTANDBY
SQL>alterdatabaserecovermanagedstandbydatabasedisconnectfromsession;
Databasealtered.
SQL>