최초 작성일 : 2021-09-07 | 수정일 : 2021-09-07 | 조회수 : |
Tags #MySqlmysql DB 자동백업 방법
개요#
매일 일정한 시간에 mysql DB를 자동으로 백업 받는 방법에 대해 정리해보았습니다.
백업 폴더 생성#
루트에 /data_backup 폴더를 만들고 그 아래에 db 폴더를 생성한다.
~# mkdir /data_backup ~# mkdir /data_backup/db
mysql DB 백업 스크립트 작성#
~# vi /bin/db_backup.sh #!/bin/bash DATE=$(date +%Y%m%d%H%M%S) BACKUP_DIR=/data_backup/db/ # 전체 DB를 백업할 경우 mysqldump -u root -p디비패스워드 --all-databases > $BACKUP_DIR'backup_'$DATE.sql # 특정 DB를 백업할 경우 # mysqldump -u root -p디비패스워드 --databases DB명 > $BACKUP_DIR'backup_'$DATE.sql find $BACKUP_DIR -ctime +7 -exec rm -f {} \; # DATE=$(date +%Y%m%d%H%M%S)는 백업할 파일명을 # 202001224505 와 같은 형식으로 저장할 수 있게 날짜를 변수로 담습니다.
# find $BACKUP_DIR -ctime +7 -exec rm -f {} \; # 여기서 -ctime +7은 7일이 지난 백업 파일을 찾아서 삭제하기 위한 코드이다.
# 추가로 분 단위로 설정하려고 할 때는 아래와 같이 # -cmin +10 처럼 작성하면 10분이 지난 파일을 찾아서 삭제하게 된다.
# find $BACKUP_DIR -cmin +10 -exec rm -f {} \;
# 백업 스크립트에 실행 권한을 부여한다. ~# chmod 755 /bin/db_backup.sh
스케쥴링을 위한 crontab 설정#
~# crontab -e # 매일 새벽 6시에 백업이 진행됩니다. 00 06 * * * /bin/db_backup.sh
그 외 시간 설정 방법
# 30분 마다 실행 */30 * * * * /bin/db_backup.sh # 매주 일요일 새벽 6시에 실행 0 06 * * 0 /bin/db_backup.sh # 매월 1일 새벽 6시에 실행 0 06 1 * * /bin/db_backup.sh # 매년 12월 31일 새벽 6시에 실행 0 06 31 12 * /bin/db_backup.sh
참고 URL#