今天做了用bakbone的方式来做数据库恢复的测试:
1. 背景知识介绍:什么是bakbone
BakBone 软件公司的NetVault自动备份软件是真正可升级的、真正模块化的高性能备份与恢复存储管理软件,可在UNIX, Linux, NT,Windows 2000和SCO等平台下使用。NetVault独特的架构可灵活地按您的信息存储需求的不断扩大和变化进行扩充和升级。NetVault可轻松地支持SAN和NAS备份。使用简单的GUI可在分布式和集中式管理环境下进行全企业范围的控制。NetVault能在众多厂商网络系统中运行并支持众多品牌的服务器、客户机、数据库、存储介质和高性能的存储设备。NetVault是由AT&T 贝尔试验室在1989年开发的。
在BakBone之前,企业不得不依靠自己有限的备份软件搭建数据信息基础设施。NetVault与众不同的架构设计师精心选用“搭积木”模块的概念,容易安装的插入式模块,可方便的增减软件的功能和对众多商务软件的支持,如Oracle, SAP, Notes, Sybase, Informix 和 Exchange等等。
上图所示的,即为NetVault软件的模块化结构图。其中包括,与操作系统直接联系的核心模块,和挂接在核心模块之下的服务器模块、图形界面模块、设备控制模块、插入式数据模块。 各模块都有其专责功能并透过核心模块传递讯息,除核心模块外其它模块各自独立。此设计为产品功能的快速扩充及加入新的应用提供了最好的支持,最适合快速变化的网络计算环境结构。
2. 当今的备份技术:
VTL,虚拟磁带库(VTL)通常为一种专用的计算工具(Appliance),它可以仿真物理磁带库的驱动器和(并且)在磁盘上存储备份映像。VTL允许使用现有的磁带备份软件,管理人员之所以对这些工具感兴趣是因为用于备份管理的范例(paradigm)与使用磁带时的范例相同。
VTL由三部分组件构成: 计算机硬件,通常为Intel处理器(基于Linux操作系统且由该系统供电),或者相近的变体; 应用软件(用于仿真磁带库和磁带驱动器); 和一组基于RAID技术的磁盘驱动器(在硬盘失效时它们可避免丢失任何数据)。 个别产商常常把这些组件捆绑成一个工具。 然而,也有可能从一家厂商购买计算机硬件和软件,再到另外一家不同的厂商那里购买磁盘阵列。
VTL允许客户配置虚拟磁带驱动器、虚拟磁带盒和指定磁带盒容量。 厂商不同,支持虚拟磁带驱动器的最大数目也不同,变化范围从个位数到无穷。 与物理磁带库不同,物理磁带库需要购买并安装额外的磁带驱动器,但对VTL来说通过改变软件结构(configuration)即可增加虚拟磁带驱动器,而这不需要花费任何额外的硬件成本。
由于VTL可以仿真磁带库和磁带驱动器,它不需要修改备份范例。 使用VERITAS NetBackup软件时,必须配置新的存储单元以便使用VTL的虚拟驱动器。之后必须修改备份策略以便使用新的存储单元。另外还必须把VERITAS NetBackup介质服务器配置为机械控制主机。VERITAS NetBackup配置进程与物理磁带库所需的配置进程相同。
磁带库(LTO):LTO(Linear Tape Open)技术,即线性磁带开放协议。是由HP、IBM、Seagate这三家厂商在1997年11月联合制定的,其结合了线性多通道、双向磁带格式的优点,基于服务系统、硬件数据压缩、优化的磁道面和高效率纠错技术,来提高磁带的能力和性能。
LTO技术有两种存储格式,即高速开放磁带格式Ultrium和快速访问开放磁带格式Accelis,它们可分别满足不同用户对LTO存储系统的要求,Ultrium采用单轴1/2英寸磁带,非压缩存储容量100GB、传输速率最大20MB/s、压缩后容量可达200GB,而且具有增长的空间。非常适合备份、存储和归档应用。Accelis磁带格式则侧重于快速数据存储,Accelis磁带格式能够很好地适用于自动操作环境,可处理广泛的在线数据和恢复应用。
磁盘:
快照技术:数据快照技术大致分为三种(我们把数据复制的时间点称之为时钟点):
1.中断镜像:在时钟点之前对数据做完全复制。简单地讲,对一个volume做快照,然后数据开始复制并同步;当达到时钟点,同步中止,保持该时钟点的瞬时数据
2.按需复制:在时钟点之后对数据做完全复制。某个时间点开始建立快照(该时间点的瞬时数据),数据开始复制,不同步。
3.虚拟映像:在时钟点对数据做虚拟。在某个时间点开始建立快照(该时间点的瞬时数据),虚拟数据,不同步。中断镜像和按需复制都需要一个同原有Volume同样大小的物理空间,存放物理数据;数据复制通过后台处理。而虚拟映像是建立一个指针表存放于内存中,只需要相当于原有Volume大小20%的空间。中断镜像和按需复制的功能更类似于Clone,有的厂商干脆叫做SnapClone。都是有物理的数据复制,物理上存在的。
IBM Flashcopy采用按需复制和虚拟映像
Sun Instant image采用虚拟映像和按需复制
EMC timefinder和HDS shadow Image采用中断镜像
Compaq Volume replicator采用虚拟映像
EMC CX系列采用虚拟映像
容灾技术:目前有很多种容灾技术,分类也比较复杂。但总体上可以区分为离线式容灾(冷容灾)和在线容灾(热容灾)两种类型。所谓的离线式容灾主要依靠备份技术来实现。其重要步骤是将数据通过备份系统备份到磁带上面,而后将磁带运送到异地保存管理。这种方式主要由备份软件来实现备份和磁带的管理,除了磁带的运送和存放外,其他步骤可实现自动化管理。整个方案的部署和管理比较简单,相应的投资也较少。但缺点也比较明显:由于采用磁带存放数据,所以数据恢复较慢,而且备份窗口内的数据都会丢失,实时性比较差。对于资金受限、对数据恢复的RTO和RPO要求较低的用户可以选择这种方式。
在线式容灾要求生产中心和灾备中心同时工作,生产中心和灾备中心之间有传输链路连接。数据自生产中心实时复制传送到灾备中心。在此基础上,可以在应用层进行集群管理,当生产中心遭受灾难、出现故障时,可由灾备中心自动接管并继续提供服务。应用层的管理一般由专门的软件来实现,可以代替管理员实现自动管理。由上面分析可见,实现在线容灾的关键是数据的复制。数据的复制有多种实现方式,各有利弊,后面我们将深入讨论。
由于在线容灾可以实现数据的实时复制,因此,数据恢复的RTO和RPO都可以满足用户的高要求。因此,数据重要性很高的用户都应选择这种方式,比如金融行业的用户。但要实现这种方式的容灾必须有很高的投入,一般中小型企业用户很难负担。在方案选择时一定要考虑多方面的因素。很多用户在初期规划时都过于追求完美,对RTO和RPO要求过高,并不考虑自身的经济承受能力,导致最后的预算无法负担。所以,选择容灾方案一定要结合自己的实际情况,并不一定要求无数据丢失,只要能确保在业务的可承受范围内就可以了。
数据复制的实现方式 数据复制的技术有很多,从实现复制功能的设备分布可大体分为三层,分别为服务器层、存储交换机层和存储层(见附图)。
1.服务器层的数据复制 在生产中心和灾备中心的服务器上安装专用的数据复制软件,以实现远程复制功能。两中心间必须有网络连接作为数据通道。可以在服务器层增加应用远程切换功能软件,从而构成完整的应用级容灾方案。这种数据复制方式相对投入较少,主要是软件的采购成本;兼容性较好,可以兼容不同品牌的服务器和存储设备,较适合硬件组成复杂的用户。但这种方式要在服务器上运行软件,不可避免地对服务器性能产生影响,选择时请注意。
2.交换机层的数据复制 存储交换机技术的发展使交换机可以实现更多的功能。很多原来由服务器和存储实现的功能现在也可在交换机层实现,比如存储虚拟化。同样,现在有些厂家的交换机产品已经可以实现复制功能。在生产中心和灾备中心都要部署这种交换机,并在交换机之间通过专用链路连接起来。由于交换机可以管理和复制的数据是存放在存储层内的,因此,用户需要将生产数据都存储在交换机所连接的存储设备中,这样就可以实现交换机对数据的管理和复制。目前使用这种技术的产品还不是很多,成熟性还有待提高,具有这种功能的交换机价格也相对较高,所以采用这种方案的用户比较少。 3.存储层的数据复制 现在的存储设备经过多年的发展已经十分成熟,特别是中高端产品,一般都具有先进的数据管理功能。远程数据复制功能几乎是现有中高端产品的必备功能。要实现数据的复制需要在生产中心和灾备中心都部署一套这样的存储系统,数据复制功能由存储系统实现。如果距离比较近(几十公里之内),之间的链路可由两中心的存储交换机通过光纤直接连接;如果距离在200公里内,可通过增加DWDM等设备直接进行光纤连接;超过200公里,则可增加存储路由器进行协议转换途径WAN或Internet实现连接。因此,从理论上可实现无限制连接。在存储层实现数据复制功能是很成熟的技术,而且对应用服务器的性能基本没有影响。在应用层增加远程集群软件后就可以实现自动灾难切换的整体容灾解决方案。目前,这种容灾方案稳定性高、对服务器性能基本无影响,是容灾方案的主流选择。
目前,容灾系统建设的成本投入还是比较可观的,用户在选择容灾方案时一定要结合自己应用环境和预算等实际情况做出决定,适合自己的才是最好的。
3. 网上案例:
环境:
windows2003server
oracle817 (rman target sys/sys@test catalog rman/rman@rman)
bakbone744 (server/client/oracle_rman_apm_release4.408/采用bakbone的虚拟带库)
问题: 通过bakbone备份数据库没有问题,但是恢复数据库时总是报错,如下:
RMAN-03026: error recovery releasing channel resources
RMAN-08031: released channel: ch00
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure during compilation of command
RMAN-03013: command type: restore
RMAN-03007: retryable error occurred during execution of command: IRESTORE
RMAN-07004: unhandled exception during command execution on channel ch00
RMAN-10035: exception raised in RPC: ORA-19507: failed to retrieve sequential fi
le, handle="BAKBONE:#186:BAKBONE:29_610373645:TEST_1167279237", parms=""
ORA-27029: skgfrtrv: sbtrestore returned error
ORA-19511: An error happened during job.
RMAN-10031: ORA-19624 occurred during call to DBMS_BACKUP_RESTORE.RESTOREBACKUPP
IECE
以下情况我都已经排除:
1、windowssystem32driversetchosts文件已经修改;
2、安装apm时停止数据库实例;
3、执行nvpluginaccess添加客户端;
4、nv服务进程采用administrator/password方式登录,并重起了服务;
5、手工link了netvault安装路径下的orasbt.dll文件到$oracle_homelib; $oracle_homein;
6、为orasbt.dll修改了环境变量中的path;
7、tnsping test ok;tnsping rman ok。
自我分析:我怀疑还是因为找不到sbt所导致,但跟sbt有关的内容我所知道的都做了,还是出问题,郁闷!
可能原因,网络的建议:
1.echo RUN {
echo ALLOCATE CHANNEL ch00 TYPE 'sbt_tape' #######加上";"#######
echo PARMS="BLKSIZE=16384,ENV=(NSR_SERVER=bakbone,NSR_CLIENT=bakbone,NSR_GROUP=bakbone)";
2.先试一试简单一点恢复脚本
run{
allocate channel c1 type "SBT_TAPE";
restore database;
recover database;
release channel c1;} 若恢复还不成功的话,需要检查一下oracle 的补丁,NV_hostname/NV_VTL名字是否有特殊符号.
解决办法:必须运行nvpluginaccess -client bakbone -account default 添加default帐户,密码默认为空。
之前所做的这一步操作添加的用户是bakbone,密码也是bakbone,所以不能恢复。而default是bakbone所定义的帐户。
4. 实际操作:
在10.2.67.34的/oracle/app/marptdb/oradata/backup建立为/oracle/app/maisdb/的目录,以建立maisdb的恢复目录(在备机上)。语法为
1.Ln –s /oracle/app/marptdb/oradata/backup/ /oracle/app/maisdb/ (难点是如何在父目录上建立对所有子目录的链接。)
2.恢复控制文件到建立的那个链接目录上(用磁带库netvault操作,因为rman的信息没有用到catalog来存储,而是存储到控制文件中,所以定义了控制文件是在rman后用file system的形式来做备份的)。事先应创建参数文件到相应的目录。
3.关闭main主机(10.2.67.31)的netvault 的客户端管理服务,以免用netvault恢复时因失误恢复到main机上。在main机上操作。
命令为nvpmgr shutdown;(相应的命令有nvpmgr status,nvpmgr startup)。可在netvault的图形界面上察看是否main机关闭,再做操作。
4. 在测试机上执行nvpluginaccess添加客户端(前提是要先装了netvault的客户端)
步骤为 cd /usr ,cd /netvault,cd /utl,
./nvpluginaccess –client 服务器名 选择选项2,输入用户default。
5.Export oracle_sid=maisdb()
6.启动实例。Startup mount;
7.操作rman来restore出对主库的备份(包括做的归档日志)。
8.Recovery database即可。
做完测试的话,Shutdown该实例。要删除掉做的目录连接。Oracle_sid变量不需要修改,因为export的话仅仅是改变当前用户会话的变量。不会对其他造成影响。
此步骤主要用于验证rman的备份集是否可以恢复,且验证备份是否可以恢复到其他主机系统上,在原来的主机出问题的情况下,可以恢复到其他机器解决此问题,或者提供了一个建立测试环境的方法。
[@more@]来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/288166/viewspace-969115/ ,如需转载,请注明出处,否则将追究法律责任。