ETC.

cubrid 백업 스크립트

민이단 2023. 7. 3. 10:09

실제 고객사에서 사용하는 스크립트이다.

incre는 받지않고 full 만 받는다.

(full backup과 log file(오라클의 archive?)로 최종 log file 시점까지 복구가 가능하다고 들었다 - 실제로 해본적은 없다.)

 

########################################################################### 
full 
########################################################################### 
#! /bin/bash
 
#-------------------------------------------------------------------------------
# set CUBRID environment variables
#-------------------------------------------------------------------------------
. /home/cubrid/.cubrid.sh
#-------------------------------------------------------------------------------
 
DB_NAME=`ps -ef | grep cub_server  | grep -v grep | awk '{print $9}'`
DATED=`date +"%Y%m%d"`
DATEH=`date +"%Y%m%d-%H%M"`
BackupDIR="/data/DB_Backup"
 
## -D --destination-path
## -z --compress
## -l --level  ## 0 Full, 1 Diff, 2 Inc
## -o --output-file
## -C --CS-mode (Online, ServerClient Mode)
## -S --SA-mode (Offline)
 
for DNAME in $DB_NAME
 
do
 
mkdir -p $BackupDIR/$DATED/${DNAME}
cubrid backupdb -C -z -D $BackupDIR/$DATED/${DNAME}/ --l 0 -o  $BackupDIR/$DATED/${DNAME}/${DNAME}_$DATEH.log ${DNAME}
sleep 2
cp $CUBRID_DATABASES/databases.txt $BackupDIR/$DATED/${DNAME}/${DNAME}_databases.txt
sleep 2
/bin/gzip $BackupDIR/$DATED/$DNAME/${DNAME}_bk0v000
done
 
## Cubrid Engine Backup ##
 
DATEW=`date +%a` # Day Of Week
 
if [ $DATEW = "Sun" ] ; then
 
mkdir $BackupDIR/$DATED/ENGINE
CUBRID_HOME="/usr/local/cubrid/CUBRID/"
tar -cvzf $BackupDIR/$DATED/ENGINE/Cubrid.engine.$DATED.tar.gz --exclude $CUBRID_HOME/databases $CUBRID_HOME
 
fi
 
 
 
###########################################################################
incremental 
###########################################################################
#! /bin/bash
 
#-------------------------------------------------------------------------------
# set CUBRID environment variables
#-------------------------------------------------------------------------------
. /home/cubrid/.cubrid.sh
#-------------------------------------------------------------------------------
 
DB_NAME=`ps -ef | grep cub_server  | grep -v grep | awk '{print $9}'`
DATED=`date +"%Y%m%d"`
DATEH=`date +"%Y%m%d-%H%M"`
BackupDIR="/data/DB_Backup"
 
## -D --destination-path
## -z --compress
## -l --level  ## 0 Full, 1 Diff, 2 Inc
## -o --output-file
## -C --CS-mode (Online, ServerClient Mode)
## -S --SA-mode (Offline)
 
for DNAME in $DB_NAME
 
do
 
mkdir -p $BackupDIR/${DATED}_Diff/${DNAME}
cubrid backupdb -C -z -D $BackupDIR/${DATED}_Diff/${DNAME}/ --l 1 -o  $BackupDIR/${DATED}_Diff/${DNAME}/${DNAME}_$DATEH.log ${DNAME}
sleep 2
cp $CUBRID_DATABASES/databases.txt $BackupDIR/${DATED}_Diff/${DNAME}/${DNAME}_databases.txt
sleep 2
/bin/gzip $BackupDIR/$DATED/$DNAME/${DNAME}_bk1v000
done
 
## Cubrid Engine Backup ##
#mkdir $BackupDIR/$DATED/ENGINE
#CUBRID_HOME="/usr/local/cubrid/CUBRID/"
#tar -cvzf $BackupDIR/$DATED/ENGINE/Cubrid.engine.$DATED.tar.gz --exclude $CUBRID_HOME/databases $CUBRID_HOME
 
 
###########################################################################
삭제rm
###########################################################################
#!/bin/bash
 
cd /data/DB_Backup
 
DATE=`date -d '181 day ago' +"%Y%m%d"`
 
for i in `ls |sort -u`
do
    if [ -d $i -a "$i" -lt "$DATE" ]
    then
        #echo "$i 는삭제 대상입니다."
        rm -rf $i
        if [ $? -eq "0" ]
        then
            echo -e "`date`\tBackup RM : $i" >> backup.log
        fi
    elif [ -d $i -a "Diff" == "`echo $i | awk -F_ '{print $2}'`" -a "`echo $i | awk -F_ '{print $1}'`" -lt "$DATE" ]
    then
        #echo "$i 는삭제 대상입니다."
        rm -rf $i
        if [ $? -eq "0" ]
        then
            echo -e "`date`\tBackup RM : $i" >> backup.log
        fi
    else
        echo "$i는 삭제 대상이 아닙니다."
    fi
done
 
 

 

위는 스크립트화 한거고 개인적으로 서버에서 이렇게도 가능하다.

cubrid backupdb -C -z -D /backup/20221201/po --l 0 -o  /backup/20221201/full_db_name.log db_name@localhost

'ETC.' 카테고리의 다른 글

D'amo VTI 암호화 테이블 컬럼 추가  (0) 2023.07.17
cubrid 설치 및 DB LINK 설정  (0) 2023.07.07