본문 바로가기
Development/Database

Cron을 이용한 MySQL DB 자동 백업

by 버들도령 2022. 7. 23.
728x90

Cron을 이용한 MySQL DB 자동 백업


일단 /etc/cron.daily 로 이동

vi backup.sh 하고 아래부분을 적어주세요

#!bin/sh
datetime=$(date +%Y_%m_%d)
/usr/local/mysql/bin/mysqldump -u계정 -p패스워드 디비명 > /저장될경로/파일명_$datetime.sql
tar cvzf 파일명_$datetime.tar.gz 파일명_$datetime.sql
rm -rf *.sql



편집툴을 이용해서
vi backup_del.sh 파일에 아래와 같이 입력하고, 저장해줍니다.

#!/bin/sh
find /저장될경로 -ctime + 3 -exec rm -rf {} ;



저장된 백업파일이 3일이상 지났으면 자동 삭제하는것입니다.


그리고... vi /etc/cron.daily 하시면 등록된 실행파일들이 보일것입니다. 거기에 위에서 생성한 backup.sh와 backup_del.sh가 추가되었는지 확인하고 크론 데몬을 띄우시면 됩니당..

아래거는 crontab -e 하시면 아마 공백으로 나올겁니다.
거기에 아래와 같이 적어주시면 되죠.. 요즘 버젼 리눅스들은 아래것은 안하고 위처럼하면 되는데요. 혹 모르니까..이것두 알아두셈

00 23 * * * /etc/cron.daily/backup.sh

위에서 00 23 * * * 는 시간설정입니다.
분 시간 일 월 년 -->이런 순서입니다. 한마디로 정각 밤11시에 매일 매월 매년 /etc/cron.daily/back.sh를 실행 시켜라라는 뜻입니다.

물론 바로 실행시킬 수도 있습니다.

00 23 * * * /usr/local/mysql/bin/mysqldump -u계정 -p패스워드 디비명 > /저장될경로/파일명.sql 하구요...

위에서 말했듯이 /etc/cron.daily에 등록을 시킨경우 crontab -e의 설정을 하실 필요 없습니다.

참고로... 위의 3일전 저장된 백업파일을 지우는게 에러가 뜨는경우

find /저장된경로 -ctime +3 -exec rm -rf {} \; --> 끝에 \표시를 해주세요

이것두 안될경우....

백업파일이 Backup_2002_01_01.tar.gz 형식이다라고 가정하고...

rm /저장된경로/Backup_`date +%Y_%m_%d --date '3 days ago'`.tar.gz

이렇게 해주면 됩니다.

728x90

댓글