리스토리의 IT's

Mysql 데이타베이스별, 테이블별 백업

리스토리™ 2007. 5. 28. 14:13
반응형

mysqldump를 이용하여 전체를 백업받을경우 용량이 커서 테이블별 핸들링이 좀 힘들다.
물론 용량이 큰 테이블이라면 또 달라지겠지만 아직까지는 dump로 백업을 받을만하다.
검색해보니 소스가 공개(원본경로를 잃어버렸음 ㅠ_ㅠ)되어 있어 약간 수정하여 사용중이다.
크론탭에 약 3시간 간격으로 주간에만 백업받도록 등록하면 자동으로 시간별로 저장된다.


#!/bin/sh

export Today="`date '+%y-%m-%d'`" #오늘날짜
HOUR=`/bin/date +"%H"` #현재실행시간
/bin/mkdir -p /backup/data/$Today/mysql

DBHOST="localhost" # 접속계정
DBUSER=""
DBPASS=""
DBLIST="디비네임1 디비네임2 디비네임n ..." # 백업할 디비
SQLBIN="/usr/local/mysql/bin" # mysql/bin경로
BACKUPDIR="/backup/data/$Today/mysql" #백업하여 저장할 경로
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 $DIR # 디비별 디렉토릭 생성
        for THISTABLE in $TABLELIST
                do
                TABLEDIR="${DIR}/${THISDB}.${THISTABLE}.sql"

                $SQLBIN/mysqldump -h$DBHOST -u$DBUSER -p$DBPASS $THISDB $THISTABLE > $TABLEDIR
        done
done

tar cvfpz /backup/data/$Today/mysql_$Today_${HOUR}h.tar.gz /backup/data/$Today/mysql
/bin/rm -rf $BACKUPDIR # 압축후 삭제

반응형

'리스토리의 IT's' 카테고리의 다른 글

무료 가상화 소프트웨어 virtualbox  (1) 2007.05.28
Mysql root 패스워드 변경하기  (0) 2007.05.28
lynx 설치하기..  (0) 2007.04.22
cron 이용 일정시간마다 php문실행  (0) 2007.04.21
date()포맷  (0) 2006.12.05