针对PRD系统的安全性及数据的可靠性,做出了一下的备份策略和脚本。
环境:
操作系统:Linux Enterprise SERVER 3
数据库: Oracle 9I
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1)系统备份(file level)
对于整个文件系统的备份,它的初衷就是当系统文件丢失、服务器硬件的物理损坏造成的系统无法正常运行时,采用
通过系统的备份文件来快速恢复损坏的系统,使操作系统在最短的时间修复。根据上面的分析,系统的备份可以在系统
硬件或软件发生改变时进行备份,无须定制备份计划。也可以定期手工备份(如3个月)。
备份脚本文件名:system_bck.sh
脚本内容如下:
#!/bin/sh
cd /
tar cvf rman:/dev/st0 . --ignore-failed-read
说明:a.rman 是远程的LINUX操作平台的备份机,这样可以把数据直接存至异地。
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
2)数据库备份(database level -- eXP/imp)
对于数据库的备份有很多种,比如:数据库的在线热备份、脱机的冷备份,ORACLE exp/imp的工具备份,Rman备份和
第三方的备份软件的备份。在对PRD系统进行分析后,决定首先采取exp/imp对ORACLE 数据库进行计划性的逻辑备份,这样
可以节省本地的硬盘空间,也是ORACLE的一种有效的备份工具。
备份脚本文件名:exp_full.sh
脚本内容如下:
#!/bin/tcsh
source /usr/local/ora9i/.cshrc
setenv rq `date +%Y%m%d`
rm -fr /Oradata/backup/exp_plan/exp_full_*
exp userid=system/manager full=Y file='/Oradata/backup/exp_plan/exp_full_$rq.dmp' log='/Oradata/backup/exp_plan/exp_full_$rq.log'
说明:a.以上是做数据库的完全数据库导出,文件名称为变量 rq 的值。(如exp_full_20050311)
b.这个逻辑导出的文件存放在本地服务器,并且保留一份,也就是当天有效。因为本地磁盘采用的是RAID5阵列,所以
没有把这个导出文件在另存到异地。(由于RAID5的可靠性,异地转存的混乱,所以没有转存到异地)。
c.用crontab进行定期的执行:23 00 * * * /Oradata/backup/exp_plan/exp_full.sh
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
3)数据库脱机冷备份
脱机冷备份的备份方式是在数据库正常关机的条件下,对数据库的数据文件,重做日志文件,控制文件,归档文件,
和服务器参数文件进行备份,这样可以保留某一时间段数据的完事性,2)可以依托于3)的备份结构。
备份脚本文件名:cool_full_bck.sh
脚本内容如下:
#!/bin/sh
#
#本地备份目录为
#/Oradata/backup/cool_bck/sda1
#/Oradata/backup/cool_bck/sda2
#
export ORACLE_HOME=/usr/local/ora9i/OraHome
$ORACLE_HOME/bin/sqlplus "/as sysdba" <<EOF
shutdown immediate
host "rm -fr /Oradata/backup/cool_bck/*"
host "mkdir -p /Oradata/backup/cool_bck/sda1"
host "mkdir -p /Oradata/backup/cool_bck/sda2"
host "cp -fr /Oradata/FIT_DB/FIT/* /Oradata/backup/cool_bck/sda2"
host "cp -fr /usr/local/ora9i/Oradata/FIT_DB/FIT/* /Oradata/backup/cool_bck/sda1"
host "cp -fr $ORACLE_HOME/dbs/*.ora /Oradata/backup/cool_bck"
startup
<<EOF
备份脚本文件名:cool_tar_remote.sh
脚本内容如下:
#!/bin/sh
#远程备份机器名为 rman
#此脚本为以追加方式写入磁带机
cd /Oradata/backup/cool_bck
tar rcvf rman:/dev/st0 .
备份脚本文件名:cool_tar_remote.sh
脚本内容如下:
#!/bin/sh
#远程备份机器名为 rman
#此脚本以覆盖方式写入磁带机
cd /Oradata/backup/cool_bck
tar cvf rman:/dev/st0 .
说明: a.00 21 * * 0 /Oradata/backup/exp_plan/cool_full_bck.sh #每周做数据库的脱机全备份
b.30 23 * * 0 /Oradata/backup/exp_plan/cool_tar_remote.sh #将本地的数据备份到远程磁带机上
c.00 03 28 * * /Oradata/backup/exp_plan/cool_tar_remote_ow.sh #每月的28日对磁带机进行覆盖备份
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
附加方式:
数据库备份(database level -- Rman)
采用Rman做异地的备份,这样也是对2)的一个补充,在异地服务器安装RMAN catalog,磁带机,创建脚本;并对脚本定
期的执行。这样本地有exp/imp的导出文件和RAID5的安全性,远程有Rman的磁带备份,可以说是对数据的双重保护。在数据
量增大时,可以考虑第三方备份软件,如:veritas netbackup, Ca ,legato等备份软件。
备份脚本文件名:ora_bck
脚本内容如下:
{configure default device type to "sBT_tape" parallelism 3;
configure exclude for tablespace temp;
allocate ch01 device type "sbt_tape";
allocate ch02 device type "sbt_tape";
allocate ch03 device type "sbt_tape";
backup database;
backup current controlfile;
backup archivelog all;
}
说明 :a.这备份方式可以做为与3)方式的可选项,见议备份方式不要太多,以免造成混乱。