mysql

mysql 백업 스크립트

은둔한량 2013. 2. 18. 15:12
반응형


다들 아시겠지만, 데이터베이스 백업 스크립트입니다.

백업 위치에 따라,

/home2/DATA/mysqldump/20050701/DB list.....
                     /20050702/DB list.....
                     /20050703/DB list.....

이런 식으로 DB 디렉터리 아래 DB 명 및 테이블이름.sql으로 쌓이게 될 겁니다.
매일 매일 백업한다는 가정 하에 7일 전 데이터는 무조건 삭제합니다.

도움이 되시길 바라면서...


#!/bin/sh
# 작성일 : 2005/07/01
# 최종수정일 : 2005/09/14
# 제목 : 서버 서비스 상태 표시기
# 별도 수정 사항 : db root, 백업위치(변수 : dump_dir)
#---------------------------------------------------------
dump_date=$(date +%Y%m%d-%H);
dump_dir="/home2/DATA/mysqldump";
DB_user="root";
DB_pass="루트패스워드";


DB_optimize_switch=0;   # 만일 1이면 optimizing까지

for database in `mysqlshow -u ${DB_user} -p${DB_pass} | awk -F" " '{ print $2 }' | grep -v "^$" |grep -v "Databases"`
do
    echo "*--------------------------------------------------------------------------------- *";
    echo "* ${database} 시작";
    echo "*--------------------------------------------------------------------------------- *";

    if [ ! -d "${dump_dir}/${dump_date}/${database}" ]
    then
         mkdir -p ${dump_dir}/${dump_date}/${database};
    fi

    for table in `mysql -u ${DB_user} -p${DB_pass} -e"show tables" ${database} | grep -v "Tables_in_${database}" | grep -v "^$"`
    do
       if [ ${DB_optimize_switch} = "1" ]
       then
           mysql -u ${DB_user} -p${DB_pass} -e"optimize table ${table}" ${database}
       fi

       mysqldump -u ${DB_user} -p${DB_pass} -n -t "${database}" ${table} > ${dump_dir}/${dump_date}/${database}/${table}.sql
       echo $table;
    done

    sleep 1;
done

echo "* ----------------------- 7일 전 디렉터리 삭제 -------------------- *";
Old_Date=`/bin/date -d "7 day ago" +"%Y%m%d-%H"`;
rm -rf ${dump_dir}/${Old_Date};

echo "*--------------------------------------------------------------------------------- *";
echo "* 백업 위치 정보 : ${dump_dir}/${dump_date} ";
echo "*--------------------------------------------------------------------------------- *";
ls -asl ${dump_dir}/${dump_date};
exit 0;

 

 이런 식으로 DB 디렉터리 아래 DB 명 및 테이블이름.sql으로 쌓이게 될 겁니다.
매일 매일 백업한다는 가정 하에 7일 전 데이터는 무조건 삭제합니다.


#!/bin/sh
# 작성일 : 2005/07/01
# 최종수정일 : 2005/09/14
# 제목 : 서버 서비스 상태 표시기
# 별도 수정 사항 : db root, 백업위치(변수 : dump_dir)
#---------------------------------------------------------
dump_date=$(date +%Y%m%d-%H);
dump_dir="/home2/DATA/mysqldump";
DB_user="root";
DB_pass="루트패스워드";


DB_optimize_switch=0;   # 만일 1이면 optimizing까지

for database in `mysqlshow -u ${DB_user} -p${DB_pass} | awk -F" " '{ print $2 }' | grep -v "^$" |grep -v "Databases"`
do
    echo "*--------------------------------------------------------------------------------- *";
    echo "* ${database} 시작";
    echo "*--------------------------------------------------------------------------------- *";

    if [ ! -d "${dump_dir}/${dump_date}/${database}" ]
    then
         mkdir -p ${dump_dir}/${dump_date}/${database};
    fi

    for table in `mysql -u ${DB_user} -p${DB_pass} -e"show tables" ${database} | grep -v "Tables_in_${database}" | grep -v "^$"`
    do
       if [ ${DB_optimize_switch} = "1" ]
       then
           mysql -u ${DB_user} -p${DB_pass} -e"optimize table ${table}" ${database}
       fi

       mysqldump -u ${DB_user} -p${DB_pass} -n -t "${database}" ${table} > ${dump_dir}/${dump_date}/${database}/${table}.sql
       echo $table;
    done

    sleep 1;
done

echo "* ----------------------- 7일 전 디렉터리 삭제 -------------------- *";
Old_Date=`/bin/date -d "7 day ago" +"%Y%m%d-%H"`;
rm -rf ${dump_dir}/${Old_Date};

echo "*--------------------------------------------------------------------------------- *";
echo "* 백업 위치 정보 : ${dump_dir}/${dump_date} ";
echo "*--------------------------------------------------------------------------------- *";
ls -asl ${dump_dir}/${dump_date};
exit 0;

 


 

반응형

'mysql' 카테고리의 다른 글

mysql 계정생성  (0) 2013.02.18
버전별 MySQL user , db , database 생성 삭제  (0) 2013.02.18
MySQL UTF-8 언어 설정 방법  (0) 2013.02.18
mysql 백업 스크립트 2  (0) 2013.02.18
스크립트를 이용한 mysql 백업하기  (0) 2013.02.18