반응형

출처: http://www.cmsfactory.net/node/10448

MySQL Database(DB)별로 백업하는 쉘 스크립트

MySQL 데이터베이스는 mysqldump로 백업할 수 있습니다.

다음은 한번의 실행으로 MySQL을 Database별로 백업하는 스크립트입니다.

root 사용자로 백업할 때의 코드로, root이 아닌 사용자로 백업할 경우 빨간색 부분을 해당 사용자 이름으로 변경해야 합니다.

#!/bin/bash
backup_dir="/home/jb_backup/WebSite"
rm -f $backup_dir/*.sql
read pw
db_list=`mysql -uroot -p$pw -e "show databases" | tail -n+2`;
for db_name in $db_list; do
 if [ "$db_name" != "information_schema" -a "$db_name" != "mysql" -a "$db_name" != "performance_schema" -a "$db_name" != "phpmyadmin" -a "$db_name" != "test" ]; then
   mysqldump -uroot -p$pw $db_name > $backup_dir/$db_name.sql
 fi
done

각 코드의 의미는 다음과 같습니다.

#!/bin/bash

스크립트 시작을 알립니다.

backup_dir="/home/backup"

백업할 디렉토리를 정합니다.

rm -f $backup_dir/*.sql

이미 존재하는 백업 파일을 삭제합니다.

read pw

MySQL 비밀번호를 입력받습니다.

db_list=`mysql -uroot -p$pw -e "show databases" | tail -n+2`;

DB 목록을 받아옵니다.

for db_name in $db_list; do

DB 목록별로 작업합니다.

if [ "$db_name" != "information_schema" -a "$db_name" != "mysql" -a "$db_name" != "performance_schema" -a "$db_name" != "phpmyadmin" -a "$db_name" != "test" ]; then
  mysqldump -uroot -p$pw $db_name > $backup_dir/$db_name.sql
fi

백업이 필요 없는 DB를 제외하고 각 DB의 이름으로 백업합니다.

done

반복작업을 마칩니다.

반응형

+ Recent posts