IT
Linux에서 crontab을 이용하여 MySQL 데이터베이스 정기 백업하기
번개애비
2022. 3. 24. 03:24
이전에 windows 환경에서의 mysql 스케줄링 백업에 대해 소개했었는데,
이번에는 리눅스에서 데이터베이스 스케줄링 백업에 대해서 소개한다.
(window 보다 훨~씬 쉬움!)
적당한 경로에 "블라블라.sh"와 같이 Bashshell 파일을 만들어준다.
아래 코드를 참고하여 사용하면 된다.
//샘플코드
#!/bin/bash
DATE=$(date +%Y%m%d)
BACKUP_DIR=/home/sql_backup/
mysqldump -uroot -p'패스워드를입력' --all-databases > $BACKUP_DIR"backup_"$DATE.sql
find $BACKUP_DIR -ctime +7 -exec rm -f {} \;
//예시코드
#!/bin/bash
DATE=$(date +%Y%m%d)
BACKUP_DIR=/home/sql_backup/
mysqldump -uroot -p'1234' --all-databases > $BACKUP_DIR"backup_"$DATE.sql
find $BACKUP_DIR -ctime +7 -exec rm -f {} \;
//데이터베이스명별로 백업 예시
#!/bin/bash
DBUSER="root"
DBPASS="1234"
DATE=$(date +%Y%m%d)
BACKUP_DIR=/home/sql_backup
DBLIST=`mysql --user=$DBUSER --password=$DBPASS -e "SHOW DATABASES;" | tail -n+2`
for THISDB in $DBLIST
do
if [ $THISDB != "information_schema" ] && [ $THISDB != "performance_schema" ] && [ $THISDB != "accounts" ] ; then
mysqldump -u$DBUSER -p$DBPASS $THISDB > $BACKUP_DIR"/"$DATE"_"$THISDB.sql
fi
done
find $BACKUP_DIR -ctime +7 -exec rm -f {} \;
-ctime +7 이라고 되어 있는 곳에 7은 일주일치를 남기고 지우겠다는 것을 의미함으로
실제로 저장하고자 하는 날짜만큼으로 수정하면 된다.
생성한 sh 파일에 적당한 권한을 설정한다.
> chmod 777 ./sql_backup.sh
crontab에 스케줄을 적절한 시간에 설정한뒤, 저장한다.
저장한뒤에는 crond 서비스를 재시작하여 정상작동되도록 하면끝난다.
> crontab -e #스케줄수정
00 06 * * * /home/sql_backup.sh #매일 아침 6시에 실행한다.
> :wq #저장
> service crond restart #크론탭 서비스 재시작
그러면 요로코롬 백업이 된다!