
XX基金
NetBackup恢复手册
PRESENTED BY:
VERITAS Enterprise Consulting Services
1600 Plymouth Street
Mountain View, CA 94043
22 Feb 2004
目录
1.文件本机恢复测试 3
2.本地恢复操作系统测试 5
3.文件异机恢复测试 6
4.oracle 数据库文件毁坏恢复测试 8
5.oracle数据库控制文件毁坏恢复测试 17
6.SQL database恢复测试 19
7.BMR AIX恢复测试 20
8.BMR Windows恢复测试 22
9.Vault的全备份恢复测试 24
10.Vault的全备份和增量备份恢复测试 26
1.文件本机恢复测试
对每台安装NetBackup Client的机器都进行一次备份和恢复测试,备份一个小目录,恢复到本机
a.准备工作
为每台安装了NetBackup Client的机器建立一个备份/usr/openv的测试备份策略,备份都通过网络写到shwp0007上的带库中,挑选若干盘磁带放在test_pool中。
确认该机器/tmp目录下有400MB以上的空间。
确认网络正常
确认NetBackup Master server正常运行
b.测试方法
立刻启动备份策略,确认备份进程正常mount磁带,写磁带并以状态0结束
在恢复GUI中找到刚才备份的数据,恢复该目录到/tmp目录下,在UNIX下用chkum比较两个二进制文件的校验值。直接用vi(或diff)来比较两个文本文件是否一致。
c.清理工作
删除建立的测试备份策略,删除test_pool,删除/tmp下恢复出的数据
d.出错处理方法
根据NetBackup Trouble shooting文档资料对错误状态进行分析,纠正错误配置后重新进行测试
测试结果:
| 主机名 | pass | fail |
2.本地恢复操作系统测试
对测试机进行一次全备份和恢复测试,备份全部操作系统,恢复到本机
a.准备工作
为这台测试机建立一个备份ALL_LOCAL_DRIVES和system_state:/的测试备份策略,备份都通过网络写到shwp0007上的带库中,挑选若干盘磁带放在test_pool中。
确认网络正常
确认NetBackup Master server正常运行
b.测试方法
立刻启动备份策略,确认备份进程正常mount磁带,写磁带并以状态0结束
在恢复GUI中找到刚才备份的数据,恢复覆盖整个操作系统。
c.清理工作
删除建立的测试备份策略,删除test_pool
d.出错处理方法
根据NetBackup Trouble shooting文档资料对错误状态进行分析,纠正错误配置后重新进行测试
测试结果:
| 主机名 | pass | fail |
3.文件异机恢复测试
对每台安装NetBackup Client的机器都进行一次备份和恢复测试,备份一个小目录,恢复到shwp0007本机
a.准备工作
为每台安装了NetBackup Client的机器建立一个备份/usr/openv的测试备份策略,备份都通过网络写到shwp0007的带库中,挑选若干盘磁带放在test_pool中。
确认该机器/tmp目录下有400MB以上的空间。
确认网络正常
确认NetBackup Master server正常运行
b.测试方法
在jfkdb2中的/usr/openv/netbackup/db目录下建altnames目录,然后创建空文件No.Restrictions.
立刻启动备份策略,确认备份进程正常mount磁带,写磁带并以状态0结束
在恢复GUI中找到刚才备份的数据,恢复该目录到jfkdb2的/tmp目录下,在UNIX下用chkum比较两个二进制文件的校验值。直接用vi(或diff)来比较两个文本文件是否一致。
c.清理工作
删除建立的测试备份策略,删除test_pool,删除jfkdb2的/tmp下恢复出的数据
d.出错处理方法
根据NetBackup Trouble shooting文档资料对错误状态进行分析,纠正错误配置后重新进行测试
测试结果:
| 主机名 | pass | fail |
4.oracle 数据库文件毁坏恢复测试
在测试机上对Oracle数据库进行一次备份和恢复测试,备份全数据库,恢复数据库
a.准备工作
1.为测试机安装Oracle数据库
2.为测试机安装NetBackup客户端和数据库agent,link该测试数据库
3.为该测试机建立一个备份数据库的测试备份策略,挑选磁带放在test_pool中。配置rman备份脚本
4.确认网络正常
5.确认NetBackup Master server正常运行
b.测试方法
1.在数据库中创建一张表,写些数据
2.立刻启动备份策略,确认备份进程正常mount磁带,写磁带并以状态0结束,查看rman脚本的日志确认备份成功
3.关闭数据库
>shutdown immediate
4.将当前的几个datafile的裸设备dd掉
5.将数据库置于mount状态
>startup mount
6.通过手工执行rman恢复数据,查看刚才的表中数据还在
c.清理工作
删除建立的测试备份策略,删除test_pool
d.出错处理方法
根据NetBackup Trouble shooting文档资料和查阅oracle Metalink对错误状态进行分析,纠正错误配置后重新进行测试
RMAN备份脚本
#
# ---------------------------------------------------------------------------
# hot_database_backup.sh
# ---------------------------------------------------------------------------
# This script uses Recovery Manager to take a hot (inconsistent) database
# backup. A hot backup is inconsistent because portions of the database are
# being modified and written to the disk while the backup is progressing.
# You must run your database in ARCHIVELOG mode to make hot backups. It is
# assumed that this script will be executed by user root. In order for RMAN
# to work properly we switch user (su -) to the oracle dba account before
# execution. If this script runs under a user account that has Oracle dba
# privilege, it will be executed using this user’s account.
# ---------------------------------------------------------------------------
# ---------------------------------------------------------------------------
# Determine the user which is executing this script.
# ---------------------------------------------------------------------------
CUSER=‘id |cut -d"(" -f2 | cut -d ")" -f1‘
# ---------------------------------------------------------------------------
# Put output in # Note: output directory requires write permission. # --------------------------------------------------------------------------- RMAN_LOG_FILE=${0}.out # --------------------------------------------------------------------------- # You may want to delete the output file so that backup information does # not accumulate. If not, delete the following lines. # --------------------------------------------------------------------------- if [ -f "$RMAN_LOG_FILE" ] then rm -f "$RMAN_LOG_FILE" fi # ----------------------------------------------------------------- # Initialize the log file. # ----------------------------------------------------------------- echo >> $RMAN_LOG_FILE chmod 666 $RMAN_LOG_FILE # --------------------------------------------------------------------------- # Log the start of this script. # --------------------------------------------------------------------------- echo Script $0 >> $RMAN_LOG_FILE echo ==== started on ‘date‘ ==== >> $RMAN_LOG_FILE echo >> $RMAN_LOG_FILE # --------------------------------------------------------------------------- # Replace /db/oracle/product/ora81, below, with the Oracle home path. # --------------------------------------------------------------------------- ORACLE_HOME=/db/oracle/product/ora81 export ORACLE_HOME # --------------------------------------------------------------------------- # Replace ora81, below, with the Oracle SID of the target database. # --------------------------------------------------------------------------- ORACLE_SID=ora81 export ORACLE_SID # --------------------------------------------------------------------------- # Replace ora81, below, with the Oracle DBA user id (account). # --------------------------------------------------------------------------- ORACLE_USER=ora81 # --------------------------------------------------------------------------- # Set the target connect string. # Replace "sys/manager", below, with the target connect string. # --------------------------------------------------------------------------- TARGET_CONNECT_STR=sys/manager # --------------------------------------------------------------------------- # Set the Oracle Recovery Manager name. # --------------------------------------------------------------------------- RMAN=$ORACLE_HOME/bin/rman # --------------------------------------------------------------------------- # Print out the value of the variables set by this script. # --------------------------------------------------------------------------- echo >> $RMAN_LOG_FILE echo "RMAN: $RMAN" >> $RMAN_LOG_FILE echo "ORACLE_SID: $ORACLE_SID" >> $RMAN_LOG_FILE echo "ORACLE_USER: $ORACLE_USER" >> $RMAN_LOG_FILE echo "ORACLE_HOME: $ORACLE_HOME" >> $RMAN_LOG_FILE # --------------------------------------------------------------------------- # Print out the value of the variables set by bphdb. # --------------------------------------------------------------------------- echo >> $RMAN_LOG_FILE echo "NB_ORA_FULL: $NB_ORA_FULL" >> $RMAN_LOG_FILE echo "NB_ORA_INCR: $NB_ORA_INCR" >> $RMAN_LOG_FILE echo "NB_ORA_CINC: $NB_ORA_CINC" >> $RMAN_LOG_FILE echo "NB_ORA_SERV: $NB_ORA_SERV" >> $RMAN_LOG_FILE echo "NB_ORA_POLICY: $NB_ORA_POLICY" >> $RMAN_LOG_FILE # --------------------------------------------------------------------------- # NOTE: This script assumes that the database is properly opened. If desired, # this would be the place to verify that. # --------------------------------------------------------------------------- echo >> $RMAN_LOG_FILE # --------------------------------------------------------------------------- # If this script is executed from a NetBackup schedule, NetBackup # sets an NB_ORA environment variable based on the schedule type. # The NB_ORA variable is then used to dynamically set BACKUP_TYPE # For example, when: # schedule type is BACKUP_TYPE is # ---------------- -------------- # Automatic Full INCREMENTAL LEVEL=0 # Automatic Differential Incremental INCREMENTAL LEVEL=1 # Automatic Cumulative Incremental INCREMENTAL LEVEL=1 CUMULATIVE # # For user initiated backups, BACKUP_TYPE defaults to incremental # level 0 (full). To change the default for a user initiated # backup to incremental or incremental cumulative, uncomment # one of the following two lines. # BACKUP_TYPE="INCREMENTAL LEVEL=1" # BACKUP_TYPE="INCREMENTAL LEVEL=1 CUMULATIVE" # # Note that we use incremental level 0 to specify full backups. # That is because, although they are identical in content, only # the incremental level 0 backup can have incremental backups of # level > 0 applied to it. # --------------------------------------------------------------------------- if [ "$NB_ORA_FULL" = "1" ] then echo "Full backup requested" >> $RMAN_LOG_FILE BACKUP_TYPE="INCREMENTAL LEVEL=0" elif [ "$NB_ORA_INCR" = "1" ] then echo "Differential incremental backup requested" >> $RMAN_LOG_FILE BACKUP_TYPE="INCREMENTAL LEVEL=1" elif [ "$NB_ORA_CINC" = "1" ] then echo "Cumulative incremental backup requested" >> $RMAN_LOG_FILE BACKUP_TYPE="INCREMENTAL LEVEL=1 CUMULATIVE" elif [ "$BACKUP_TYPE" = "" ] then echo "Default - Full backup requested" >> $RMAN_LOG_FILE BACKUP_TYPE="INCREMENTAL LEVEL=0" fi # --------------------------------------------------------------------------- # Call Recovery Manager to initiate the backup. This example does not use a # Recovery Catalog. If you choose to use one, replace the option ’nocatalog’ # from the rman command line below with the # ’rcvcat # # Note: Any environment variables needed at run time by RMAN # must be set and exported within the switch user (su) command. # --------------------------------------------------------------------------- # Backs up the whole database. This backup is part of the incremental # strategy (this means it can have incremental backups of levels > 0 # applied to it). # # We do not need to explicitly request the control file to be included # in this backup, as it is automatically included each time file 1 of # the system tablespace is backed up (the inference: as it is a whole # database backup, file 1 of the system tablespace will be backed up, # hence the controlfile will also be included automatically). # # Typically, a level 0 backup would be done at least once a week. # # The scenario assumes: # o you are backing your database up to two tape drives # o you want each backup set to include a maximum of 5 files # o you wish to include offline datafiles, and read-only tablespaces, # in the backup # o you want the backup to continue if any files are inaccessible. # o you are not using a Recovery Catalog # o you are explicitly backing up the control file. Since you are # specifying nocatalog, the controlfile backup that occurs # automatically as the result of backing up the system file is # not sufficient; it will not contain records for the backup that # is currently in progress. # o you want to archive the current log, back up all the # archive logs using two channels, putting a maximum of 20 logs # in a backup set, and deleting them once the backup is complete. # # Note that the format string is constructed to guarantee uniqueness and # to enhance NetBackup for Oracle backup and restore performance. # # --------------------------------------------------------------------------- CMD_STR=" ORACLE_HOME=$ORACLE_HOME export ORACLE_HOME ORACLE_SID=$ORACLE_SID export ORACLE_SID $RMAN target $TARGET_CONNECT_STR rcvcat rmandb/rmandb@rmandb << EOF RUN { ALLOCATE CHANNEL ch00 TYPE ’SBT_TAPE’; ALLOCATE CHANNEL ch01 TYPE ’SBT_TAPE’; BACKUP $BACKUP_TYPE SKIP INACCESSIBLE TAG hot_db_bk_level0 FILESPERSET 5 # recommended format FORMAT ’bk_%s_%p_%t’ DATABASE; sql ’alter system archive log current’; RELEASE CHANNEL ch00; RELEASE CHANNEL ch01; # backup all archive logs ALLOCATE CHANNEL ch00 TYPE ’SBT_TAPE’; ALLOCATE CHANNEL ch01 TYPE ’SBT_TAPE’; BACKUP filesperset 20 FORMAT ’al_%s_%p_%t’ ARCHIVELOG ALL DELETE INPUT; RELEASE CHANNEL ch00; RELEASE CHANNEL ch01; # # Note: During the process of backing up the database, RMAN also backs up the # control file. This version of the control file does not contain the # information about the current backup because "nocatalog" has been specified. # Too include the information about the current backup, the control file should # be backed up as the last step of the RMAN section. This step would not be # necessary if we were using a recovery catalog. # ALLOCATE CHANNEL ch00 TYPE ’SBT_TAPE’; BACKUP # recommended format FORMAT ’cntrl_%s_%p_%t’ CURRENT CONTROLFILE; RELEASE CHANNEL ch00; } EOF " # Initiate the command string if [ "$CUSER" = "root" ] then su - $ORACLE_USER -c "$CMD_STR" >> $RMAN_LOG_FILE RSTAT=$? else /usr/bin/sh -c "$CMD_STR" >> $RMAN_LOG_FILE RSTAT=$? fi # --------------------------------------------------------------------------- # Log the completion of this script. # --------------------------------------------------------------------------- if [ "$RSTAT" = "0" ] then LOGMSG="ended successfully" else LOGMSG="ended in error" fi echo >> $RMAN_LOG_FILE echo Script $0 >> $RMAN_LOG_FILE echo ==== $LOGMSG on ‘date‘ ==== >> $RMAN_LOG_FILE echo >> $RMAN_LOG_FILE exit $RSTAT RMAN恢复命令 rman target sys/manager nocatalog >run{ >allocate channel ch00 type ‘sbt_tape’; >restore database; >recover database; >release channel ch00; >} 测试结果 5.oracle数据库控制文件毁坏恢复测试 在测试机上对Oracle数据库进行一次备份和恢复测试,备份全数据库,恢复控制文件 a.准备工作 1.为测试机安装Oracle数据库 2.为测试机安装NetBackup客户端和数据库agent,link该测试数据库 3.为该测试机建立一个备份数据库的测试备份策略,挑选磁带放在test_pool中。配置rman备份脚本 4.确认网络正常 5.确认NetBackup Master server正常运行 b.测试方法 1.立刻启动备份策略,确认备份进程正常mount磁带,写磁带并以状态0结束,查看rman脚本的日志确认备份成功 2.关闭数据库 >shutdown immediate 3.将当前的控制文件改名 4.将数据库置于nomount状态 >startup nomount 5.通过手工执行rman恢复控制文件 6.确认数据库open(ALTER DATABASE OPEN RESETLOGS)没有问题 c.清理工作 删除建立的测试备份策略,删除test_pool d.出错处理方法 根据NetBackup Trouble shooting文档资料和查阅oracle Metalink对错误状态进行分析,纠正错误配置后重新进行测试 RMAN恢复命令 rman target / nocatalog rman>run{ rman>ALLOCATE CHANNEL d1 DEVICE TYPE sbt; rman>RESTORE CONTROLFILE; rman>MOUNT DATABASE; rman>restore database; rman>recover database; rman>release channel d1; rman>} 测试结果 6.SQL database恢复测试 在测试机上对SQL数据库进行一次备份和恢复测试,备份全数据库 a.准备工作 1.为测试机安装SQL数据库 2.为测试机安装NetBackup客户端和数据库agent,配置测试数据库的备份 3.为该测试机建立一个备份数据库的测试备份策略,挑选磁带放在test_pool中。配置bch备份脚本 4.确认网络正常 5.确认NetBackup Master server正常运行 b.测试方法 1.立刻启动备份策略,确认备份进程正常mount磁带,写磁带并以状态0结束 2.删除一个database 3.恢复这个database 4.删除master库 5.重建master库并恢复所有database c.清理工作 删除建立的测试备份策略,删除test_pool d.出错处理方法 根据NetBackup Trouble shooting文档资料对错误状态进行分析,纠正错误配置后重新进行测试 7.BMR AIX恢复测试 主要是测试BMR能够完整地恢复AIX系统 1.在测试机安装BMR client 安装BMR客户端 在AIX上运行 # installp -acXd 2.对BMR客户端打patch 上传BMR的patch到/tmp目录 #$BMRDIR/bmrpatchclient -f 3.配置BMR客户端 运行/usr/lpp/BareMetal/bmrsetupclient a. Enter BMR server’s hostname: 输入BMR server的主机名 b. Enter the BMR server port number [8362]: 输入BMR server的通信端口号 c. 如果NetBackup的 bpstart_notify不存在,就会出现如下提示: The BMR command bmrsavecfg must be run before each backup of this system. The NetBackup client will run a bpstart_notify script from /usr/openv/netbackup/bin. Automatically generate bpstart_notify script? [y] 回答y 4.创建NetBackup备份OS的备份策略 该策略必须在属性一页选择”True Image Recover”和”with move detection”选项 5.测试方法 方法1:在BMR的WEB 图形界面上选中测试客户端,选择AIX为boot image,选择”prepare to restore”,选择只恢复系统卷(rootvg) 将AIX操作系统启动,按F1或F5根据提示修改网关,BMR服务器,端口等信息,选择OK后开始恢复。恢复过程中可以通过BMR server上的/var/bmr/logs/ 恢复完后自动重起,系统就恢复正常 方法2:在BMR的WEB 图形界面上选中测试客户端,选择AIXCD为boot image,选择”prepare to restore”,选择只恢复系统卷(rootvg) 将生成的启动光盘塞入光驱 将AIX操作系统启动, 按F1或F5根据提示启动到光盘启动 选择OK后开始恢复。恢复过程中可以通过BMR server上的/var/bmr/logs/ 恢复完后自动重起,系统就恢复正常 8.BMR Windows恢复测试 主要是测试BMR能够完整地恢复Windows系统 1.在Windows上安装BMR client 安装BMR客户端 2.对BMR客户端打patch 上传BMR的patch到c:\ep目录 使用图形界面打patch 3.配置BMR客户端 使用图形界面配置客户端 4.创建NetBackup备份OS的备份策略 该策略必须在属性一页选择”True Image Recover”和”with move detection”选项 5.测试方法 方法1:在BMR的WEB 图形界面上选中Windows客户端,选择WIN boot image为boot image,选择”prepare to restore” 将生成好的customized软盘插入,启动系统,根据提示恢复系统 恢复完后自动重起,系统就恢复正常 方法2:在BMR的WEB 图形界面上选中Windows客户端,选择WIN CD boot image为boot image,选择”prepare to restore” 将生成好的customized media boot软盘和光盘插入,启动系统,根据提示恢复系统 恢复完后自动重起,系统就恢复正常 方法3:在BMR的WEB 图形界面上选中Windows客户端,选择WIN boot image为boot image,选择”prepare to restore” 将生成好的generic软盘插入,启动系统,根据提示恢复系统 恢复完后自动重起,系统就恢复正常 9.Vault的全备份恢复测试 对测试机进行一次备份和vault操作,然后进行恢复测试,备份一个小目录,恢复到本机 a.准备工作 为测试机建立一个备份/usr/openv的测试备份策略,备份都通过网络写到shwp0007上的带库中,挑选若干盘磁带放在test_pool中。 确认该机器/tmp目录下有400MB以上的空间。 确认网络正常 确认NetBackup Master server正常运行 b.测试方法 立刻启动备份策略,确认备份进程正常mount磁带,写磁带并以状态0结束 建立vault备份策略将磁带复制后弹出 使用bpchangeprimary将拿出的磁带设置为primary 在恢复GUI中找到刚才备份的数据,恢复该目录到/tmp目录下,会提示需要的磁带,将磁带放入后进行恢复 c.清理工作 删除建立的测试备份策略,删除test_pool,删除/tmp下恢复出的数据 d.出错处理方法 根据NetBackup Trouble shooting文档资料对错误状态进行分析,纠正错误配置后重新进行测试 测试结果: 10.Vault的全备份和增量备份恢复测试 对测试机的oracle数据库进行一次全备份和vault操作,再进行增量备份和vault操作,然后进行恢复测试,备份一个小目录,恢复到本机 a.准备工作 为测试机的数据库建立全备份和增量备份的测试备份策略,备份都通过网络写到shwp0007上的带库中,挑选若干盘磁带放在test_pool中。 确认网络正常 确认NetBackup Master server正常运行 b.测试方法 立刻启动全备份的备份策略,确认备份进程正常mount磁带,写磁带并以状态0结束 建立vault备份策略将磁带复制后弹出 再启动增量备份的备份策略,确认备份进程正常mount磁带,写磁带并以状态0结束 建立vault备份策略将磁带复制后弹出 使用bpchangeprimary将拿出的磁带设置为primary 恢复时可以看到在使用拿出的磁带 c.清理工作 删除建立的测试备份策略,删除test_pool,删除/tmp下恢复出的数据 d.出错处理方法 根据NetBackup Trouble shooting文档资料对错误状态进行分析,纠正错误配置后重新进行测试 测试结果:主机名 pass fail 主机名 pass fail 主机名 pass fail 主机名 pass fail
