본문 바로가기
Database/Mysql

Mysql / Mariadb Backup Shell Script (sqldump)

by 화곡공룡 2020. 12. 21.
반응형

안녕하세요

Mysql기반 sqldump를 활용한 DB 백업방법입니다.

 

해당 스크립트는 각각의 Table별 백업을 파일을 만들어서 관리할 수 있으며

DB List에 들어있는 모든 Table의 리스트를 추출하여 sqldump를 실행합니다.

 

 

#!/bin/sh

echo "#### start DB Backup $(date '+%Y-%m-%d %H:%M:%S') ####"
echo ""
Today="`date '+%Y%m%d.%H%M'`"
day="`date '+%Y%m%d'`"

/bin/mkdir -p /db_backup/$Today
DBHOST="localhost"
DBUSER="root"
DBPASS="rootroot"
DBLIST="testdb1 testdb2"  ## Backup DB List
SQLBIN="/usr/bin"  ## mysql/bin경로
BACKUPDIR="/db_backup/$Today"

echo "### start sqldump $(date '+%Y-%m-%d %H:%M:%S') ###"

for THISDB in $DBLIST
        do
        TABLELIST=`${SQLBIN}/mysql -h${DBHOST} -u${DBUSER} -p${DBPASS} ${THISDB} -e "show tables" | /bin/grep -v Tables_in_${THISDB}`
        DIR="${BACKUPDIR}/${THISDB}"
        /bin/mkdir -p $DIR
        for THISTABLE in $TABLELIST
                do
                TABLEDIR="${DIR}/${THISDB}.${THISTABLE}.sql"
                $SQLBIN/mysqldump --single-transaction -h$DBHOST -u$DBUSER -p$DBPASS $THISDB $THISTABLE > $TABLEDIR
        done
done

echo "### end sqldump $(date '+%Y-%m-%d %H:%M:%S') ###"
echo ""
echo "### start tar $(date '+%Y-%m-%d %H:%M:%S') ###"

cd $BACKUPDIR
tar cvfpz /home/backup/dbbackup_${Today}.tar.gz *
echo "### end tar $(date '+%Y-%m-%d %H:%M:%S') ###"
echo ""

/bin/rm -rf $BACKUPDIR
echo ""
echo "#### end DB Backup $(date '+%Y-%m-%d %H:%M:%S') ####"
반응형

댓글