MySQL 자동 백업 스크립트

웹 사이트를 운영하다보면 데이터베이스에 사고(?)가 발생할 수도 있습니다. 쌓여왔던 데이터를 모두 잃어버릴 수도 있습니다. 그럴 때를 대비해서 하루하루? 데이터베이스를 백업을 할 필요가 있습니다.

현재 사용하고 있는 리눅스, 우분투 서버에서 MySQL 데이터베이스를 자동으로 백업하는 스크립트를 작성하고 매일 매일 실행되도록 설정해 보겠습니다.

저장할 디렉토리 준비

백업 파일을 저장할 디렉토리를 준비하고 쓰기 권한을 잘 설정해 둡니다.

mkdir db_bakup
chmod 755 db_backup

쉘 스크립트 작성

backup.sh 이름으로 파일을 생성하고 아래 내용을 참고해서 작성합니다.

FILE_NAME=backup_`date +”%Y%m%d%H%M%S”`
BACKUP_DIR=/root/db_backup/
mysqldump -u[USER] -p[PASSWORD] –databases [DB_NAME] > $BACKUP_DIR$FILE_NAME.sql
find $BACKUP_DIR -ctime +14 -exec rm -f {} \;

FILE_NAME 은 %Y%m%d%H%M%S 형식으로 백업시간을 파일명으로 하기 위함입니다.

BACKUP_DIR 는 준비해놓은 디렉토리로 설정하면 됩니다.

mysqldump 프로그램을 이용해서 실제 데이터베이스 백업을 실행합니다.

[USER] 자리는 MySQL 계정이고, [PASSWORD]는 그 계정의 비밀번호이고, [DB_NAME]은 백업할 데이터베이스 이름입니다.

find $BACKUP_DIR -ctime +14 -exec rm -f {} \;

마지막 줄은 2주가 지난 백업파일은 삭제하기 위한 리눅스 명령입니다. ctime 으로 오래된 백업파일을 골라내고 exec rm 명령으로 삭제합니다.

작성한 backup.sh 는 현재 단순 텍스트 파일이니, 실행이 가능하도록 파일 모드를 변경합니다.

chmod 100 backup.sh

리눅스 콘솔에서 ./backup.sh 를 실행해 백업을 위한 디렉토리에 sql 파일이 생성되는지 먼저 확인합니다. 잘 실행되면 매일매일 자동으로 backup.sh 를 실행하도록 cron 에 등록을 합니다.

아래 명령으로 crontable 편집화면으로 들어갑니다.

$ crontab -e

# 매일 0시 0분 backup.sh 파일 실행
0 0 * * * /root/database_backup/backup.sh

위처럼 편집하고 빠져나오면 설정이 끝납니다.

이제 매일매일 자동으로 데이터베이스 백업이 실행됩니다.


Comments

Leave a Reply

Your email address will not be published. Required fields are marked *