MySQL DB 자동 백업에 대해서 알아보자.
- 백업 폴더 생성하기
# 백업 파일을 관리하고 싶은 경로에서 폴더 생성
# 경로 => Desktop
mkdir backup
- sh 백업 파일 생성하기
# sh 파일 생성
# 경로 => Desktop/backup
touch backup.sh
- 생성한 sh파일에 vim으로 editor모드로 접속
# script 추가
# 경로 => Descktop/backup/backup.sh
sudo vim backup.sh
- sh파일에 실행 권한 주기
chmod +x backup.sh
- sh파일에 스크립트 추가하기
#!/bin/sh
# MySQL Database
# 데이터베이스 INFO
DB_USER="DB 유저 아이디"
DB_PASSWORD="DB 유저 패스워드"
DB_NAME="DB 스키마 이름"
# Backup Path
# 백업파일 보관할 경로
BACKUP_DIR="/Descktop/backup"
# Date
# 날짜 지정
DATE=$(date +"%Y%m%d%H%M%S")
# Backup File
# 백업파일 이름 지정
BACKUP_FILE="$BACKUP_DIR/$DB_NAME.backup_$DATE.sql.gz"
# MySQL dump
# mysqldump 명령어
/usr/bin/mysqldump -u $DB_USER -p$DB_PASSWORD $DB_NAME > $BACKUP_FILE
여기까지가 DB 백업 파일을 생성하는 단계이다.
다음은 crontab을 이용하여 주기적으로 기간을 지정해서 자동으로 백업 파일을 생성 할 수 있게 적용해보자.
crontab은 어떤 경로에서 접속해도 상관 없어 보인다.
- crontab editor모드에 접속하기
# crontab editor모드 접속
EDITOR=vim crontab -e
- 원하는 기간을 지정해서 위에 생성한 sh파일 실행시키기
# Run everytime 3:00am
# 매일 새벽 3시에 실행되도록 설정하였다.
0 3 * * * /Descktop/backup/backup.sh
# 1분에 한번 씩 실행되도록 설정하고 정상적으로 백업 파일이 만들어지는지 확인
*/1 * * * * /Descktop/backup/backup.sh
이번엔 백업 파일이 쌓이는 것을 방지하기 위해 자동 삭제 script도 추가해보자.
- sh 삭제 파일 생성하기
# sh 파일 생성
# 경로 => Desktop/backup
touch delete.sh
- 생성한 sh파일에 vim으로 editor모드로 접속
# script 추가
# 경로 => Descktop/backup/delete.sh
sudo vim delete.sh
- sh파일에 실행 권한 주기
chmod +x delete.sh
- sh파일에 스크립트 추가하기
#!/bin/sh
# Delete Backup File
# 7일 전보다 과거 / 일주일치만 모아두기
find /DATA/mysql_backup
스크립트 추가 후 crontab에 언제 이 스크립트 파일을 실행 할 지 정해준다.
# Run everytime 4:00am
# 매일 새벽 4시에 실행되도록 설정하였다.
0 4 * * * /Descktop/backup/delete.sh
# 1분에 한번 씩 실행되도록 설정하고 정상적으로 백업 파일이 만들어지는지 확인
*/1 * * * * /Descktop/backup/delete.sh