MySQL Database 자동으로 백업하기

Reading time ~2 minutes

MySQL Database를 백업하는 쉘 스크립트와 crontab을 이용해서 특정 시간에 주기적으로 쉘 스크립트를 실행 하도록하여 DB를 자동으로 백업하는 방법에 대해서 알아본다.


MySQL Database Dump 명령

  • DB 백업
$ mysqldump -u [user_id] -p[user_password] [DB_name] > [backup_file_name].sql
  • DB 복원
$ mysql -u [user_id] -p[user_password] [DB_name] < [backup_file_name].sql
  • 기타 테이블 백업 및 복구, 모든 DB 백업 및 복구

http://chongmoa.com/sql/630


Bash shell script

db_backup.sh

#!/bin/bash
DATE=$(date +%Y%m%d)
BACKUP_DIR=/home/user/database_backup/
mysqldump -u abc -pabc123  > $BACKUP_DIR"backup_"$DATE.sql

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


DATE 변수에 현재 날짜를 저장한다.

아래와 같이 사용하여 현재 날짜를 알아낼 수 있다.
date 뒤에 띄어쓰기가 있는 것에 주의하자.

$ echo $(date +%Y%m%d)
20171118


BACKUP_DIR 변수에는 백업 파일들이 저장될 디렉토리 경로를 저장한다.


위에서 알아본 mysqldump 명령을 이용하여 백업 파일을 생성한다.


find 명령을 이용하여 3일이 지난 백업파일은 삭제한다.

-ctime n 옵션은 파일의 퍼미션을 마지막으로 변경시킨 날짜를 기준으로 파일을 찾아낸다.

  • +n : n일 또는 n일 이전에 퍼미션이 변경된 파일
  • -n : 오늘 부터 n일 전 사이에 퍼미션이 변경된 파일
  • n : 정확히 n일 전에 퍼미션이 변경된 파일

-exec command {} \; 옵션은 찾아낸 파일들을 대상으로 특정 명령을 수행한다.

find 명령어에 대해 아래 링크에 자세히 정리되어있다.


crontab 을 이용하여 스크립트 자동 실행

아래 포스트 링크에 crontab에 대해 자세히 설명되어 있다.
Linux crontab 이용하여 작업 명령 예약하기

$ crontab -e
...

00 04 * * * /home/user/db_backup.sh

Ubuntu에서 Nginx, uWSGI를 이용하여 Django 배포하기

Ubuntu에서 Nginx, uWSGI를 이용하여 Django 프로젝트를 배포하는 방법에 대해서 알아본다. 로컬에서 개발할 때는 Django에서 제공하는 간단한 웹서버인 runserver를 이용하여 테스트를 했었다. 하지만 실제로 배포할 때는...… Continue reading