ShellScript로 원격DB 백업 및 로컬DB 복원 하기

#!/bin/bash
LOCALDB={로컬DB명}
REMOTEDB={원격DB명}
LOCALDBFILE=/home/databaseBackup/sqlFile/$LOCALDB.sql
echo "Backup:: $REMOTEDB > $LOCALDB"
/usr/bin/mysqldump -h{원격DB서버주소} -P {원격DB서버포트} -u {원격DB사용자} -p"{원격DB사용자비밀번호}" --add-drop-table $REMOTEDB > $LOCALDBFILE
LOCALDBFILESIZE=$(wc -c "$LOCALDBFILE" | awk '{print $1}')
echo "FileSize: $LOCALDBFILESIZE"
#파일이 일정 용량 있상일경우에만 복원을 시도
if [ $LOCALDBFILESIZE -gt 3000 ];then
        # 원격서버의 Root권한이 %인것을 로컬에서는 localhost로 문자 치환
        echo "Strng replace:: $LOCALDBFILE >> $LOCALDBFILE.bk"
        /usr/bin/cat $LOCALDBFILE | sed 's/DEFINER=`root`@`%`/DEFINER=`root`@`localhost`/g' > $LOCALDBFILE.bk
        # 문자치환된 파일을 덮어써서 1개로 만듬
        echo "File Move:: $LOCALDBFILE.bk >> $LOCALDBFILE"
        /usr/bin/mv -f $LOCALDBFILE.bk $LOCALDBFILE
        # 문자치환된 파일 삭제처리
        echo "Tmpfile Remove $LOCALDBFILE.bk"
        /usr/bin/rm -rf $LOCALDBFILE.bk
        # 로컬 DB에 파일 복구
        echo "Restore:: $LOCALDB < $LOCALDBFILE"
        /usr/bin/mysql -u{로컬DB사용자} -p"{로컬DB사용자비밀번호}" $LOCALDB < $LOCALDBFILE
fi

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다