MySQL | 테이블별로 백업 하기
페이지 정보
작성자 100K5 작성일13-03-22 15:40 조회43,077회 댓글0건관련링크
본문
#!/bin/sh
DBHOST="localhost"
DBUSER=""
DBPWD=""
DBUSER=""
DBPWD=""
BACKUPDIR="/mysqldump/"
# 캐릭터 셋 옵션 처리(utf8, latin1)
OPTIONS="--default-character-set=latin1 --routines --single-transaction --quick"
DATE=`date +%Y%m%d`
DELDATE=`date --date "30 day ago" +%Y%m%d`
# 같은 날짜 폴더가 있다면 먼저 폴더 삭제를 한다.
rm -rf ${BACKUPDIR}${DELDATE}
rm -rf ${BACKUPDIR}${DELDATE}
# 백업폴더/오늘날짜 폴더를 생성한다.
mkdir ${BACKUPDIR}${DATE}
mkdir ${BACKUPDIR}${DATE}
# 전체 데이타베이스 백업시(선택1)
RESULT=`/usr/local/mysql/bin/mysql -u$DBUSER -p$DBPWD -h$DBHOST -e "show databases" | grep -v Database`
RESULT=`/usr/local/mysql/bin/mysql -u$DBUSER -p$DBPWD -h$DBHOST -e "show databases" | grep -v Database`
#특정 데이타베이스 백업시(DB명 띄어쓰기로 구분해서 나열)(선택2)
# RESULT="mysql information_schema db명"
# RESULT="mysql information_schema db명"
for DB in $RESULT; do
mkdir ${BACKUPDIR}${DATE}/${DB}
mkdir ${BACKUPDIR}${DATE}/${DB}
TABLELIST=`/usr/local/mysql/bin/mysql -u$DBUSER -p$DBPWD -h$DBHOST $DB -e "show tables" | grep -v Tables_in_$DB`
for TABLE in $TABLELIST; do
FNAME_DESC=${BACKUPDIR}${DATE}/${DB}/${TABLE}_desc_${DATE}.sql
FNAME_DATA=${BACKUPDIR}${DATE}/${DB}/${TABLE}_data_${DATE}.sql
/usr/local/mysql/bin/mysqldump -u$DBUSER -p$DBPWD -h$DBHOST $OPTIONS --no-data $DB $TABLE >> $FNAME_DESC
/usr/local/mysql/bin/mysqldump -u$DBUSER -p$DBPWD -h$DBHOST $OPTIONS --no-create-db $DB $TABLE >> $FNAME_DATA
echo "set foreign_key_checks=1;" >> $FNAME_DATA
echo "set foreign_key_checks=1;" >> $FNAME_DATA
gzip --rsyncable $FNAME_DATA
done
done
댓글목록
등록된 댓글이 없습니다.