Mysql 데이타베이스별, 테이블별 백업 :: 2007/05/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 # 압축후 삭제

받은 트랙백 (0)개 : 댓글(2)개 달렸습니다.
Trackback Address :: http://blog.leestory.com/trackback/55 관련글 쓰기
  • haejuksun | 2007/06/30 06:12 | PERMALINK | EDIT/DEL | REPLY

    메모리를 너무 많이 잡아 먹네요...
    Out of memory가 계속 뜹니다. ㅡㅡ;

    • BlogIcon 이맹렬 | 2007/07/02 17:18 | PERMALINK | EDIT/DEL

      이상하네요.
      저는 실행될때 메모리 점유를 봐도 몇프로 안올라가거든요.
      @.@ 저는 낮시간대에도 2-3시간 간격으로 백업을 하거든요.
      혹시 로그나 이런거 확인해 보세요~

Name
Password
Homepage
Secret
< PREV |  1  |  ...  336  |  337  |  338  |  339  |  340  |  341  |  342  |  343  |  344  |  ...  394  |  NEXT >