개발개발/Database

Mysql 테이블 단위로 dump 남기기

꾸냥 2013. 11. 1. 16:15

디비를 백업하는 과정에서 한번에 dump 를 남기면 만들긴 편하지만 나중에 특정 테이블 복구할때 불편해지는 경우가 있다.


그런 경우 테이블 단위로 백업을 해놨으면 할때가 있는데.


그때 사용할 스크립트.


#!/bin/bash

ID="아이디"
PW="패스워드"
DB="백업디비"

NOW=$(date +"%Y%m%d")
NOWTIME=$(date +"%Y%m%d%H")

BACKUPPATH="/백업저장할위치/$NOW"

if [ ! -d $BACKUPPATH ]; then
        mkdir -p $BACKUPPATH
fi

DBS="$(mysql -e 'show tables' -u$ID -p$PW $DB | grep -v 'Tables_in_tourde')"

for table in $DBS
do
        BACKUPFILE="$BACKUPPATH/[$NOWTIME]$table.gz"
        echo $BACKUPFILE
        mysqldump --add-drop-database --opt --lock-all-tables -u$ID -p$PW $DB $table | gzip > $BACKUPFILE
done


ID, PW, DB 와 BACKUPPATH 를 원하는것으로 하면됨.


동작은 저장할 위치에 날짜로 폴더를 만든 다음 [YYYYMMDDHH]테이블명.gz 으로 압축 백업된다.


아무래도 소스에 계정정보가 들어있어서 관리를 잘해야됨.


[덧글]

서버에 gzip 이 깔려있어야함

반응형