#!/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