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
이렇게 해주면 됩니다.
'Development > Database' 카테고리의 다른 글
MySQL 실행중인 쿼리 확인(show processlist) 및 강제종료(kill, stop) 방법 (0) | 2021.09.21 |
---|---|
DBMS 데이터 언어 - DDL, DML, DCL, TCL 의 정의 (0) | 2020.04.03 |
MySQL 에러코드와 에러메세지(ERROR Codes and Messages) (0) | 2020.02.18 |
mysql 데몬 실행에러 - Table 'mysql.host' doesn't exist (0) | 2020.02.18 |
org.postgresql.util.PSQLException: ERROR: operator does not exist: integer = character varying (0) | 2019.06.16 |
댓글