lghready1
作者lghready1·2016-11-15 15:58
技术经理·POLYSTOR

利用FlashCopy快速备份SAP案例分享

字数 11798阅读 5389评论 0赞 0

一、业务需求

该用户为大型生产制造企业,应用为SAP,数据库为Oracle 10g。生产业务系统7*24小时高可用,以提供生产所需要的库存、生产、销售等实时数据。

目前的生产环境备份方式采用TSM+RMAN的方式,在夜间12点执行online备份。

为了适应新的企业信息化建设要求,计划部署一套ERP测试开发多用途业务平台,针对生产系统,实现SAP测试、报表输出、数据挖掘功能。

二、现状问题

由于SAP的模块较多,依赖信息系统的业务也较密集,为了进一步提高信息系统应用水平,计划利用生产数据库,通过flashcopy复制技术,搭建一套SAP测试平台、报表输出、数据挖掘系统,通过部署测试、报表、数据挖掘等系统,进一步拓展信息系统的功能,提高领导层对业务及行业市场战略决策的时效性。

而现有的信息系统平台,只能是通过在生产数据库上采用RMAN备份到磁带,或者通过export出来,然后,在测试系统主机上进行RMAN恢复或import;整个操作和过程相对而言较为繁琐,针对系统管理员而言,仍需要有一定的操作经验。

三、测试的目的

由于SAP业务主机繁忙,为了尽可能减少ORACLE数据库的维护和测试工作所带来的ORACLE备份、EXPORT、IMPORT等问题,旨在利用IBM DS4800基于微码的快闪复制技术FLASHCOPY,来加快数据库的快照备份,进一步为测试平台提供SAP生产数据,实现数据分析、数据挖掘、业务测试等功能。

四、测试环境说明

生产主机:IBM POWER 570(8路处理器,48G内存),运行SAP生产环境

测试主机:IBM POWER 550(2路处理器,16G内存),运行SAP测试环境

存储:IBM DS4800(16G机头,生产环境使用光纤盘,测试环境使用SATA)

应用情况:SAP ERP

数据库版本:ORACLE 10g

操作系统版本:AIX6.1

五、Flashcopy技术应用简述

FlashCopy快闪复制技术是基于IBM DS4000系列存储硬件微码级别的复制技术,需要购买许可并激活后才能使用。

FlashCopy对于加快数据库热备份非常有用。一般情况下,当数据被设置成为热备份方式时,优先的数据文件将被备份或复制到其他的介质上。随着数据库的增长,数据热备份的时间可能由几个小时增长到几天。对于数据热备份来说,最大的风险在于当所有数据库更新操作还没有完成磁盘复制,还都被保存在内存中时,将非常易受攻击。随着数据库的增长和备份时间的变长,风险也在加大。

FlashCopy能够帮助将热备份窗口减小到以分钟计算,一旦保留了一个拷贝,数据库将退出热备份模式,并重新开始正常的操作。然后,FlashCopy逻辑驱动器将被使用备份到离线的介质或复制到其他的介质。这项操作能够帮助缩短备份的操作时间。

FlashCopy逻辑驱动器还有进一步的用途。当需要进行数据库恢复时,FlashCopy逻辑驱动器能够被用于启动恢复。这项功能能够帮助避免从离线借助恢复的需求。

六、测试环境中存储与磁盘扩展柜连接示意图

1台DS4800主机,3台EXP810扩展柜,为提高性能,分为3个存储环路。

说明,测试环境为1台光纤交换机,划分多个ZONE,模拟成2个交换机。

七、存储LUN划分表

八、存储管理地址表

九、创建falshcopy盘步骤

通过IBM DS Storage Manager进行创建,下图所示,假如在现有的设备上创建FlashCopy卷,步骤如下图所示:

  1. 假如已存在数据卷,如下图所示,选择Create FlashCopy Logical Driver。
  2. 选择OK。
  3. 接下来,选择Advanced,根据规划,flashcopy盘将创建在RAID5的SATA盘上。
  4. 输入卷名,点击NEXT。
  5. 点击Unconfigured capacity(create new array)。我们将为Flashcopy逻辑盘新创建一个RAID5。
  6. 为新的array输入一个新的名字,点击NEXT。
  7. 接下来在RAID Level中选择RAID5,选择好所需要的硬盘个数,点击Calculate Capacity,将显示出RAID大小的容量,点击NEXT。
  8. 设置flashcopy资料库的比分比大小。缺省为20%,可根据实际情况调整。
  9. 选择Map later with Stroage Partitioning,设置当flashcopy资料库超过50%时将告警,并且选择Fail flashcopy logical driver,设置当资料库满了之后停止写flashcopy。
  10. 点击Finish完成flashcopy卷创建工作。
  11. 创建好flashcopy后,如下图所示,查看是否创建成功。

十、在测试主机端识别DS4800 LUN资源

备注:

  1. 1sapvg是oracle和sap应用程序的安装目录。
  2. 在测试端的DS4800 LUN上不要建立任何卷组和文件系统。卷组和文件系统由flasshcopy自动生成。
    十一、Flashcopy快闪复制脚本

1)FC-ALL主脚本:

echo “display this time”  >>/etc/flashcopyfiles/flcp.log

date >>/etc/flashcopyfiles/flcp.log

echo “remote sh /etc/flashcopyfiles/hotbkstart-before” >>/etc/flashcopyfiles/flcp.log

rsh czqas /etc/flashcopyfiles/hotbkstart-before >>/etc/flashcopyfiles/flcp.log

echo “start db hotbkstart” >>/etc/flashcopyfiles/flcp.log

sh /etc/flashcopyfiles/HotbkStart.sh

if [ $? != 0 ]

then

  echo “Set database to readonly failed” >>/etc/flashcopyfiles/flcp.log

else

  echo “Set database to readonly …..” >>/etc/flashcopyfiles/flcp.log

fi

cat /oracle/CZP/scripts/work/bbkup.log >>/etc/flashcopyfiles/flcp.log

echo “ “ >>/etc/flashcopyfiles/flcp.log

echo “disable flashcopy disk” >>/etc/flashcopyfiles/flcp.log

/opt/IBM_DS4000/client/Smcli –n IBM ds4800 –f /etc/flashcopyfiles/fc-disable >>/etc/flashcopyfiles/flcp.log

sleep 10

echo “recreate a flashcopy disk” >>/etc/flashcopyfiles/flcp.log

/opt/IBM_DS4000/client/Smcli –n IBM ds4800 –f /etc/flashcopyfiles/fc-recreate >>/etc/flashcopyfiles/flcp.log

sleep 20

echo “start db hotbkstop”

sh /etc/flashcopyfiles/HotbkEnd.sh 

if [ $? != 0 ]

then

  echo “Resume database failed” >>/etc/flashcopyfiles/flcp.log

else

  echo “Resume database …..” >>/etc/flashcopyfiles/flcp.log

fi

cat /oracle/CZP/scripts/work/ebkup.log >>/etc/flashcopyfiles/flcp.log

echo “ “ >>/etc/flashcopyfiles/flcp.log

echo “remote sh /etc/flashcopyfs/hotbkstart-after” >>/etc/flashcopyfiles/flcp.log

rsh czqas /etc/flashcopyfiles/hotbkstart-after >>/etc/flashcopyfiles/flcp.log

echo “this job is complete” >>/etc/flashcopyfiles/flcp.log

2)hotbkstart-before脚本:

echo “umount all filesystems and be ready to do recreate flashcopy”

umount /fs/oracle/CZP/oraarch

umount /fs/oracle/CZP

umount /fs/oracle/CZPdata

umount /fs/oracle

echo “varyoffvg all vg “

varyoffvg sapdbvg

exportvg sapdbvg

varyoffvg sapdblogvg

exportvg sapdblogvg

echo “rmdev all flashcopy disk”

rmdev –dl hdisk4

rmdev –dl hdisk5

rmdev –dl hdisk6

rmdev –dl hdisk7

rmdev –dl hdisk8

rmdev –dl hdisk9

3)HotbkStart.sh脚本:

#!/bin/ksh

Initialize()

{

   ORACLE_SID=CZP ; export ORACLE_SID

   ORACLE_HOME=/oracle/${ORACLE_SID}/102_64; export ORACLE_HOME

   #In case of 9.2.0 oracle version, please use the following line

   UID=”connect system/hjsuzuki”

   #Please create the user bkpmgr with the mentioned password and grant DBA  rivilege

   SQL=”${ORACLE_HOME}/bin/sqlplus system/hjsuzuki”

   Script_dir=”/oracle/${ORACLE_SID}/scripts/work”

   Log_dir=”/oracle/${ORACLE_SID}/scripts/log”; export Log_dir

   Today=`date ‘+%y%m%d’`

   controlfile_bkup_dir=”/oracle/${ORACLE_SID}/saptrace/usertrace”

}

Get_Ts()

{

   echo “set echo off” > $Script_dir/bbkup.sql

   echo “set pages 1000” >> $Script_dir/bbkup.sql

   echo “set head off “ >> $Script_dir/bbkup.sql

   echo “set feed off “ >> $Script_dir/bbkup.sql

   echo “select ‘alter tablespace ‘||tablespace_name||’ begin backup;’ from dba_tablespaces order by tablespace_name; “ >> $Script_dir/bbkup.sql

   ${SQL} < $Script_dir/bbkup.sql > $Script_dir/bbkup.tmp

   grep “^alter” $Script_dir/bbkup.tmp > $Script_dir/bbkup.out

}

Check_Bkup ()

{

   #echo “$UID” > $Script_dir/chkbkup.sql

   echo “set head off” > $Script_dir/chkbkup.sql

   echo “set feed off” >> $Script_dir/chkbkup.sql

   echo “select ‘number+’||count(1) from v\\$backup where status=’ACTIVE’;” >> $Script_dir/chkbkup.sql

   $SQL < $Script_dir/chkbkup.sql > $Script_dir/chkbkup.out

   grep “number” $Script_dir/chkbkup.out|cut –d”+” –f2|read bkupcnt

   #echo “Number : $bkupcnt “

   if [ $bkupcnt –gt 0 ]; then

      echo “Few tablespaces are in backup mode …...”

      $SQL < $Script_dir/ebkup.out > $Script_dir/ebkup_check.log

   fi

}

Start_Bkup ()

{

   #echo “In start backup”

  ${SQL} < $Script_dir/bbkup.out > $Script_dir/bbkup.log

}

Check_Start_Bkup ()

{

   if [ `grep ORA $Script_dir/bbkup.log|wc –l` -gt 0 ]

   then

      echo “Error while putting TS in Backup mode!! Exiting !! on `date`” >> $Log_dir/HotBack.log

      exit

   fi

}

Switch_Logs_ctl ()

{

   echo “alter system switch logfile;” > $Script_dir/switch_logs_ctl.sql

   echo “alter system switch logfile;” >> $Script_dir/switch_logs_ctl.sql

   echo “alter system switch logfile;” >> $Script_dir/switch_logs_ctl.sql

   echo “alter system switch logfile;” >> $Script_dir/switch_logs_ctl.sql

   echo “alter  rivil switch logfile;” >> $Script_dir/switch_logs_ctl.sql

   echo “alter system switch logfile;” >> $Script_dir/switch_logs_ctl.sql

   echo “alter system switch logfile;” >> $Script_dir/switch_logs_ctl.sql

   echo “alter system switch logfile;” >> $Script_dir/switch_logs_ctl.sql

   echo “alter database backup controlfile to trace;” >> $Script_dir/switch_logs_ctl.sql

   echo “alter database backup controlfile to ‘$controlfile_bkup_dir/control_bkup_$Today’;” >> $Script_dir/switch_logs_ctl.sql

   $SQL < $Script_dir/switch_logs_ctl.sql > $Script_dir/switch_logs_ctl.log

}

Main()

{

   Initialize

   echo “Starting HotBkStart script on `date`” >> ${Log_dir}/HotBack.log

   Get_Ts

   Check_Bkup

   Switch_Logs_ctl

   echo “Putting all tablespaces in Backup mode on `date`” >> $Log_dir/HotBack.log

   Start_Bkup

   Check_Start_Bkup

   echo “Control Passed to BCV Split on `date`” >> $Log_dir/HotBack.log

}

Main

4)fc-disable脚本:

disableFlashCopy logicalDrive [“ERP_PRO_1-1”];

disableFlashCopy logicalDrive [“ERP_PRO_2-1”];

disableFlashCopy logicalDrive [“ERP_PRO_3-1”];

disableFlashCopy logicalDrive [“ERP_PRO_4-1”];

disableFlashCopy logicalDrive [“ERP_LOG_1-1”];

disableFlashCopy logicalDrive [“ERP_LOG_2-1”];

5)fc-recreate脚本:

recreateFlashcopy logicalDrive [“ERP_PRO_1-1”];

recreateFlashcopy logicalDrive [“ERP_PRO_2-1”];

recreateFlashcopy logicalDrive [“ERP_PRO_3-1”];

recreateFlashcopy logicalDrive [“ERP_PRO_4-1”];

recreateFlashcopy logicalDrive [“ERP_LOG_1-1”];

recreateFlashcopy logicalDrive [“ERP_LOG_2-1”];

6)HotbkEnd.sh脚本:

#!/bin/ksh

Initialize()

{

   ORACLE_SID=CZP ; export ORACLE_SID

   ORACLE_HOME=/oracle/${ORACLE_SID}/102_64; export ORACLE_HOME

   #In case of 9.2.0 oracle version, please use the following line

   UID=”connect system/hjsuzuki”

   #Please create the user bkpmgr with the mentioned password and grant DBA  rivilege

   SQL=”${ORACLE_HOME}/bin/sqlplus system/hjsuzuki”

   Script_dir=”/oracle/${ORACLE_SID}/scripts/work”

   Log_dir=”/oracle/${ORACLE_SID}/scripts/log”; export Log_dir

   Today=`date ‘+%y%m%d’`

   controlfile_bkup_dir=”/oracle/${ORACLE_SID}/saptrace/usertrace”

}

Check_End_Bkup ()

{

   #echo “$UID” > $Script_dir/chkbkup.sql

   echo “set head off” > $Script_dir/chkbkup.sql

   echo “set feed off” >> $Script_dir/chkbkup.sql

   echo “select ‘number+’||count(1) from v\\$backup where status=’ACTIVE’;” >> $Script_dir/chkbkup.sql

   $SQL < $Script_dir/chkbkup.sql > $Script_dir/chkbkup.out

   grep “number” $Script_dir/chkbkup.out|cut –d”+” –f2|read bkupcnt

   #echo “Number : $bkupcnt “

   if [ $bkupcnt –gt 0 ]; then

      #echo “Few tablespaces are in backup mode …...”

      $SQL < $Script_dir/ebkup.out > $Script_dir/ebkup_check.log

   fi

}

End_Bkup ()

{

   #echo “In end backup”

   sed “s/begin backup;/end backup;/g” $Script_dir/bbkup.out > $Script_dir/ebkup.out

   ${SQL} < $Script_dir/ebkup.out > $Script_dir/ebkup.log

}

Switch_Logs ()

{

   echo “alter system switch logfile;” > $Script_dir/switch_logs.sql

   echo “alter system switch logfile;” >> $Script_dir/switch_logs.sql

   echo “alter system switch logfile;” >> $Script_dir/switch_logs.sql

   echo “alter system switch logfile;” >> $Script_dir/switch_logs.sql

   echo “alter system switch logfile;” >> $Script_dir/switch_logs.sql

   echo “alter system switch logfile;” >> $Script_dir/switch_logs.sql

   echo “alter system switch logfile;” >> $Script_dir/switch_logs.sql

   echo “alter system switch logfile;” >> $Script_dir/switch_logs.sql

   $SQL < $Script_dir/switch_logs.sql > $Script_dir/switch_logs.log

}

Main()

{

   Initialize

   echo “Strating the End Backup Procedures on `date`” >> $Log_dir/HotBack.log

   End_Bkup

   Check_End_Bkup

   echo “End Backup completed successfully on `date`” >> $Log_dir/HotBack.log

   Switch_Logs

   echo ”-----------------------------------------------------------” >> $Log_dir/HotBack.log

   echo ” ” >> $Log_dir/HotBack.log

}

Main

十二、Flashcopy脚本自动执行调度

每天零时1点自动执行作业,利用crontab –e设置如下:

十三、Flashcopy完成之后的校验

1、确认卷组是否已经被建立并激活:

2、确认flashcopy出来的文件系统是否存在并mount:

备注:经flashcopy出来的文件系统,在文件系统路径的前面会有一个/fs标记。

十四、Flashcopy脚本执行日志分析

display this time

Tue Aug 18 01:00:00 GMT+08:00 2009

remote sh /etc/flashcopyfiles/hotbkstart-before

umount all filesystems and be ready to do recreate flashcopy

varyoffvg all vg

rmdev all flashcopy disk

hdisk4 deleted

hdisk5 deleted

hdisk6 deleted

hdisk7 deleted

hdisk8 deleted

hdisk9 deleted

start db hotbkstart

Set database to readonly …..

disable flashcopy disk

Performing syntax check…

Syntax check complete.

Executing script…

Script execution complete.

Smcli completed successfully.

Recreate a flashcopy disk

Performing syntax check…

Syntax check complete.

Executing script…

Script execution complete.

Smcli completed successfully.

Resume database …..

remote sh /etc/flashcopyfs/hotbkstart-after

create fs to mount

hdisk4 changed

hdisk5 changed

hdisk6 changed

hdisk7 changed

hdisk8 changed

hdisk9 changed

sapdbvg

sapdblogvg

Replaying log for /dev/fsfslv06.

Replaying log for /dev/fsfslv04.

This job is complete

十五、总结

通过实施flashcopy技术,加快了数据备份的进程,同时,也避免了人工干预,特别适用于中小企业及运行营、电力、金融等行业。优势总结如下:

使用 FlashCopy 等磁盘复制技术,通过基于时间点的卷对卷拷贝方式,对生产业务SAP系统进行快速复制,这个方法最大的优势在于,速度快。其次,通过卷对卷的拷贝,能够最大程度的保证测试SAP和生产SAP物理特性(数据在物理磁盘上的分布情况)的一致性。
加速了数据的备份进程,FlashCopy可以将传统的磁盘拷贝时间从几十分钟缩短到几秒钟,从而减少了数据备份窗口,提高了生产系统的使用效率。
减少了备份软件在执行作业备份时造成的性能问题,而不影响生产系统。
为进一步有效利用flashcopy技术,通过对逻辑卷进行时间点复制,而成功使用flashcopy复制出来的卷,可直接导入到其它AIX主机,可用于文件恢复、备份、应用测试或数据发掘等应用拓展。

如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!

0

添加新评论0 条评论

Ctrl+Enter 发表

本文隶属于专栏

最佳实践
不同的领域,都有先行者,实践者,用他们的最佳实践来加速更多企业的建设项目落地。

相关文章

相关问题

相关资料

X社区推广