Scripts to create LVM snapshots and backup multiple LVM for Cache database

Epic does not recommend backing up epic cache directly from the server users are advise to create scripts to backup the database from a proxy server. This script will help you backup multiple cache instance by first freezing cache and creating and LVM snapshots.

#!/bin/bash
######################## SNAPSHOT FOR 'EPIC INSTANCE,POC,TST & TSTRPT' CONFIGURATION ##############################################
#### Version 2 ####
#### Lloyd     ####
inst1="poc"
inst2="tst"
inst3="tstrpt"
date=$(date '+%Y%m%d')
dateold=$(date '+%Y%m%d')
VOLGROP1='pocvg'                                             
ORIGLV1='poc'                                           
SNAPVOL1='poc_snapshot'                                 
SNAPSIZ1='1GB'                                          
VOLGROP2='tstvg'                                        
ORIGLV2='tst'                             
SNAPVOL2='tst_snapshot'         
SNAPSIZ2='1GB'
VOLGROP3='tstrptvg'
ORIGLV3='tstrpt' 
SNAPVOL3='tstrpt_snapshot'
SNAPSIZ3='1GB'    
backupremove="/backup-poc"        
Currentjournaldirectoryname1='/epic/jrn/poc/'       
alternatejournaldirectoryname1='/epic/poc/cachesys/mgr/journal'                
Currentjournaldirectoryname2='/epic/jrn/tst/'
alternatejournaldirectoryname2='/epic/tst/cachesys/mgr/journal'
Currentjournaldirectoryname3='/epic/jrn/tstrpt/'
alternatejournaldirectoryname3='/epic/tstrpt/cachesys/mgr/journal'
######### nonprdfile[s]doesn't exist on training server ################################
backupDir1="/epic/nonprdfiles/backups/${inst1}"                
backupDir2="/epic/nonprdfiles/backups/${inst2}"
backupDir3="/epic/nonprdfiles/backups/${inst3}"
mntDir1="/backups/${inst1}"                
mntDir2="/backups/${inst2}"
mntDir3="/backups/${inst3}"
#
#### Freeze Cache Data Base to backup the DB ####
/epic/${inst1}/bin/instfreeze  >/dev/null 2>&1
/epic/${inst2}/bin/instfreeze  >/dev/null 2>&1
/epic/${inst3}/bin/instfreeze  >/dev/null 2>&1
#
#### Run this script only if you have root privilege #####
if [ "$(id -u)" != '0' ]
then
        echo "Sorry this script has to be run as root"
        exit 1
fi
#### Check that the snapshot does not already exist before creating the snapshot ####
if [ -e "/dev/${VOLGROP1}/${SNAPVOL1}" ]
then
        echo "The lvm snapshot already exists, please manually remove the snapshot using lvremove"
        exit 1
fi
if [ -e "/dev/${VOLGROP2}/${SNAPVOL2}" ]
then
        echo "The lvm snapshot already exists, please manually remove the snapshot using lvremove"
        exit 1
fi
if [ -e "/dev/${VOLGROP3}/${SNAPVOL3}" ]
then
        echo "The lvm snapshot already exists, please manually remove the snapshot using lvremove"
        exit 1
fi
#### Start the LVM file system ####
if ! /usr/sbin/lvcreate -L${SNAPSIZ1} -s -n ${SNAPVOL1} /dev/${VOLGROP1}/${ORIGLV1} >/dev/null 2>&1
then
        echo "creation of the lvm snapshot was successful"
        exit 1
fi
if ! /usr/sbin/lvcreate -L${SNAPSIZ2} -s -n ${SNAPVOL2} /dev/${VOLGROP2}/${ORIGLV2} >/dev/null 2>&1
then
        echo "creation of the lvm snapshot was successful"
        exit 1
fi
if ! /usr/sbin/lvcreate -L${SNAPSIZ3} -s -n ${SNAPVOL3} /dev/${VOLGROP3}/${ORIGLV3} >/dev/null 2>&1
then
        echo "creation of the lvm snapshot was successful"
        exit 1
fi
#### Thaw Cache #####
/epic/${inst1}/bin/instthaw  >/dev/null 2>&1
/epic/${inst2}/bin/instthaw  >/dev/null 2>&1
/epic/${inst3}/bin/instthaw  >/dev/null 2>&1
#
#### Backup the Journal Files ####
mkdir -p ${backupDir1}
mkdir -p ${backupDir2}
mkdir -p ${backupDir3}
cd ${Currentjournaldirectoryname1}
cp -rp *  ${backupDir1}  >/dev/null 2>&1
cd ${alternatejournaldirectoryname1}
cp -rp *  ${backupDir1}  >/dev/null 2>&1
cd ${Currentjournaldirectoryname2}
cp -rp *  ${backupDir2}  >/dev/null 2>&1
cd ${alternatejournaldirectoryname2}
cp -rp *  ${backupDir2}  >/dev/null 2>&1
cd ${Currentjournaldirectoryname3}
cp -rp *  ${backupDir3}  >/dev/null 2>&1
cd ${alternatejournaldirectoryname3}
cp -rp *  ${backupDir3}  >/dev/null 2>&1
#
#
#### Make the directory and mount the snapshot ####
mkdir -p ${mntDir1}
mkdir -p ${mntDir2}
mkdir -p ${mntDir3}
/usr/bin/mount /dev/${VOLGROP1}/${SNAPVOL1} ${mntDir1}
/usr/bin/mount /dev/${VOLGROP2}/${SNAPVOL2} ${mntDir2}
/usr/bin/mount /dev/${VOLGROP3}/${SNAPVOL3} ${mntDir3}
cd ${mntDir1}
#
#### Compress the snapshot data ####
tar pzcf ${backupDir1}/${inst1}.${date}.tar.gz *
cd ${backupDir1}
tar pzcf backup.poc.${date}.tar.gz *
cd ${mntDir2}
tar pzcf ${backupDir2}/${inst2}.${date}.tar.gz *
cd ${backupDir2}
tar pzcf backup.tst.${date}.tar.gz *
cd ${mntDir3}
tar pzcf ${backupDir3}/${inst3}.${date}.tar.gz /epic/tstrpt/shdprotect/*
cd ${backupDir3}
tar pzcf backup.tstrpt.${date}.tar.gz *
#
#### Umount the snapshot ####
#
cd
umount ${mntDir1}
umount ${mntDir2}
umount ${mntDir3}
#### Delete the snapshot ####

/usr/sbin/lvremove -f "/dev/${VOLGROP1}/${SNAPVOL1}" #>/dev/null 2>&1
/usr/sbin/lvremove -f "/dev/${VOLGROP2}/${SNAPVOL2}" #>/dev/null 2>&1
/usr/sbin/lvremove -f "/dev/${VOLGROP3}/${SNAPVOL3}" #>/dev/null 2>&1
#### Copy the data to the secondary location ####

cd ${backupDir1}
rsync  -aHAXxSp backup.poc.${date}.tar.gz  root@10.26.124.14:/epic/nonprdfiles/backups/poc  >/dev/null 2>&1
cd ${backupDir2}
rsync  -aHAXxSp backup.tst.${date}.tar.gz  root@10.26.124.14:/epic/nonprdfiles/backups/tst  >/dev/null 2>&1
cd ${backupDir3}
rsync  -aHAXxSp backup.tstrpt.${date}.tar.gz  root@10.26.124.14:/epic/nonprdfiles/backups/tstrpt  >/dev/null 2>&1
##### Clean up Old files ############
cd ${backupremove}
mkdir ${date}
###
cp -rf /epic/nonprdfiles/backups/poc/backup.poc.${dateold}.tar.gz ${backupremove}/${date}
rm -rf /epic/nonprdfiles/backups/poc/*
###########################################################################################
cd ${backupremove}
mkdir ${date}
###
cp -rf /epic/nonprdfiles/backups/tst/backup.tst.${dateold}.tar.gz ${backupremove}/${date}
rm -rf /epic/nonprdfiles/backups/tst/*
###########################################################################################
cd ${backupremove}
mkdir ${date}
###
cp -rf /epic/nonprdfiles/backups/tstrpt/backup.tstrpt.${dateold}.tar.gz ${backupremove}/${date}
rm -rf /epic/nonprdfiles/backups/tstrpt/*
#############################################################################################
echo "Backup was successfully completed"
exit 0

Comments