<DB2>《AIX环境下DB2冷备机恢复方案(生产实践)》

《AIX环境下DB2冷备机恢复方案(生产实践)》

  • 1 DB2数据库常见备份方式简要说明
  • 2 方案说明
  • 3 实际方案(信息已脱敏)
    • 3.1 基本信息
    • 3.2 创建互信
    • 3.3 部署scp脚本
    • 3.4 在冷备机192.168.16.165上部署恢复脚本
    • 3.5 在冷备机192.168.16.165上部署清理脚本

1 DB2数据库常见备份方式简要说明

生产环境中,对于生产环境DB2数据库的安全备份主要有以下方法,我将以从小到大的方式进行叙述:

序号 标题 表现方式
1 备份数据库表 一般有以下方式:
方式1:在生产环境数据库创建备份表,并将数据完整插入备份表。但无法实现实时备份。
方式2:利用SQL复制技术,建立复制表,进行实时复制。
方式3:利用Q复制技术,可实现跨服务器的实时复制。
方式4:利用表的导出导入,备份和恢复表。
2 备份表空间 一般将表空间进行备份然后恢复。
3 备份数据库 一般有以下方式:
方法1:离线备份数据库。这样的备份比较完整。可用于离线恢复。
方法2:在线全备数据库。这样的备份也比较完整。但有时恢复时需要读取日志文件。
方法3:在线增备数据库,又分为拆分备份和差异备份。都需要在在线全备基础上进行恢复。
4 备份数据库所在的小型机 数据库在小型机上,使用AIX系统时,可以通过操作系统HACMP技术,将数据库所在的小机进行备份,达到一台故障另一台接管的数据库卷组的目的。这种方式一般数据较为完整,但是过程中会出现数据库重启,极端情况会导致数据库实例损坏。
5 备份数据库卷组 一般通过存储技术将数据库所在的卷组进行复制,这样出现断电等极端情况下,在另一台数据库实例上恢复数据库。一般在日常,就已经准备了另一套完整的数据库环境,一侧卷组损坏数据库无法恢复,则可以直接启动另一侧。缺点是,一般无法实时同步,两端数据差在4小时左右。
6 备份数据库环境 数据库在linux虚拟机上时,可以克隆虚拟机。这样对操作系统、数据库软件、数据库实例、数据库都做了完整备份。
7 备份机房环境 在同城或异地建设容灾机房,配置网络,复刻生产环境的数据库和应用,日常可利用存储和操作系统技术进行数据库数据备份,紧急情况可通过切换网络,实现紧急恢复。缺点是,数据一般有延迟,部分新数据存在丢失风险。

2 方案说明

本方案实际解决的是数据库HA无法保障数据库正常应对灾难情况下,使用冷备的数据库进行恢复。
冷备的数据库一般具备以下特征:
1、一般会配置生产相同的数据库版本、数据库用户、权限、服务器用户密码。
2、设置数据库参数、操作系统参数与生产环境基本一致。
3、数据库家目录、数据库日志、表空间等操作系统目录和文件的路径与生产一致。
4、网络安全策略与生产环境一致。
5、通过更改网卡为生产环境网卡进行启动。

3 实际方案(信息已脱敏)

3.1 基本信息

类别 源数据库服务器 冷备机服务器
IP地址 192.168.16.161 192.168.16.165
实例用户 db2test1 db2test1
数据库1 usme usme
数据库1活动日志 /datanet/usme/db2test1/db2test1/NODE0000/SQL00001/LOGSTREAM0000/

3.2 创建互信

由于使用scp方式传输数据,建立源服务器到冷备机服务器的互信。

步骤 内容
1 db2test1用户,登录165,在/etc/hosts文件中,添加192.168.16.161 prvip_WZFWZ01
2 db2test1用户,登录161,在/etc/hosts文件总,添加192.168.16.165 zwfw
3 db2test1用户,在161生成秘钥,执行ssh-keygen -t rsa,在~/.ssh目录下生成id_rsa id_rsa.pub两个文件。
将id_rsa.pub重命名id_rsa.pub@161,传输到165上,scp id_rsa.pub@161 [email protected]:/datanet/backupsafe。
4 db2test1用户,登录165,复制id_rsa.pub为id_rsa.pub@165,传输到161上,scp id_rsa.pub@165 [email protected]:/home/db2test1。
5 将公钥追加到authorized_keys文件。
db2test1用户,登录161,cd /home/db2test1/.ssh,cat id_rsa.pub@161 >> authorized_keys
db2test1用户,登录165,cd /home/db2test1/.ssh,cat id_rsa.pub@165 >> authorized_keys

3.3 部署scp脚本

在源服务器部署scp脚本,将备份文件和日志文件传输到冷备机服务器。


//crontab 如下
#0 3 * * * sh /home/db2test1/scpdbbkup.sh  >> /home/db2test1/scpdbbkup.log
// 脚本内容如下:
#!/bin/bash
echo "Startbackup:`date +"%Y%m%d_%H%M"`"
scp -r /databak/datanet/backup/backup01/usme*001 db2test1@192.168.16.165:/datanet/backupsafe/usme
scp -r /databak/datanet/backup/backup01/seame*001 db2test1@192.168.16.165:/datanet/backupsafe/seame
uslog=`ls -rtl /datanet/usme/db2test1/db2test1/NODE0000/SQL00001/LOGSTREAM0000/ | tail -8 | awk '{print $9}'`
for i in $uslog
do
        scp /datanet/usme/db2test1/db2test1/NODE0000/SQL00001/LOGSTREAM0000/$i db2test1@192.168.16.165:/datanet/backupsafe/usme/log/NODE0000/LOGSTREAM0000
done
sealog=`ls -rtl /datanet/seame/db2test1/db2test1/NODE0000/SQL00001/LOGSTREAM0000/ | tail -8 | awk '{print $9}'`
for k in $sealog
do
        scp /datanet/seame/db2test1/db2test1/NODE0000/SQL00001/LOGSTREAM0000/$k db2test1@192.168.16.165:/datanet/backupsafe/seame/log/NODE0000/LOGSTREAM0000
done
echo "Endbackup:`date +"%Y%m%d_%H%M"`" 

3.4 在冷备机192.168.16.165上部署恢复脚本

//crontab 如下
#0 4 * * *  sh /datanet/backupsafe/safeusbak.sh >> /datanet/backupsafe/safebackup.log 2>1&
// 脚本内容如下:
#!/bin/bash
. /etc/profile
if [ -f /home/db2test1/sqllib/db2profile ]; then
    . /home/db2test1/sqllib/db2profile
fi
echo '\n\n\n\n'
echo "Start of usme restore:`date +"%Y%m%d_%H%M"`"
db2 restore database usme from /datanet/backupsafe/usme logtarget /datanet/backupsafe/usme/logs without prompting 
echo "End of usme restore:`date +"%Y%m%d_%H%M"`"
## move file from the directory log to logs
uslogfile="/datanet/backupsafe/usme/log/NODE0000/LOGSTREAM0000"
for i in `ls -l /datanet/backupsafe/usme/log/NODE0000/LOGSTREAM0000 | awk '{print $9}'| grep -v "^$"`
do
cd $uslogfile 
if [ ! -e /datanet/backupsafe/usme/logs/NODE0000/LOGSTREAM0000/$i ];then
mv /datanet/backupsafe/usme/log/NODE0000/LOGSTREAM0000/$i /datanet/backupsafe/usme/logs/NODE0000/LOGSTREAM0000
fi
done
db2 "rollforward database usme to end of logs and stop overflow log path(/datanet/backupsafe/usme/logs/NODE0000/LOGSTREAM0000)"
echo "End of usme rollforward:`date +"%Y%m%d_%H%M"`" 

3.5 在冷备机192.168.16.165上部署清理脚本

清理备份文件,否则不断传输备份文件,将使得磁盘空间浪费。

//crontab 如下
#0 7 * * *  sh /datanet/backupsafe/safeclear.sh >> /datanet/backupsafe/safebackup.log 2>1&
// 脚本内容如下:
#!/bin/bash
. /etc/profile
echo "ClearStart time :`date`"
cd /datanet/backupsafe/usme
rm -rf usme.0*001
cd /datanet/backupsafe/usme/log/NODE0000/LOGSTREAM0000
rm -rf S0*.LOG
cd /datanet/backupsafe/usme/logs
rm -rf NODE0000
cd /datanet/backupsafe/seame
rm -rf seame.0*001
cd /datanet/backupsafe/seame/log/NODE0000/LOGSTREAM0000
rm -rf S0*.LOG
cd /datanet/backupsafe/seame/logs
rm -rf NODE0000
echo "ClearEnd time :`date`"

你可能感兴趣的:(#,DB2,oracle,数据库,DB2)