최근 글
최근 댓글
블로그 이웃
번개애비의 라이프스톼일
Linux에서 crontab을 이용하여 MySQL 데이터베이스 정기 백업하기 본문
Windows 환경에서 MySQL 데이터베이스를 데이터베이스별로 자동으로 백업하기
필자의 회사의 개발서버는 Windows 기반이고 다수의 웹서비스를 개발하고 있는 상황이라 데이터베이스를 보다 효과적으로 백업하기 위해 별도의 배치파일을 만들어 스케줄러로 동작시키고 있다.
www.burndogfather.com
이전에 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 #크론탭 서비스 재시작
그러면 요로코롬 백업이 된다!
'IT' 카테고리의 다른 글
SPA(Single Page Application)를 개발할때 고려하면 좋은 애니메이션 라이브러리 모음 (0) | 2022.03.30 |
---|---|
Tmap 혹은 Naver 맵에서 화면에 따라 마커를 실시간으로 감추기 (강려크한 대용량 마커 처리) (0) | 2022.03.24 |
RDBMS에서의 Foreign key(외래키)에 대한 고찰 (어쩌다가 우리는 FK를 쓰지 않는가?) (8) | 2022.03.22 |
iOS15 업데이트와 함께 찾아온 인앱브라우저 지옥과 최선 (13) | 2022.03.15 |
도어락 작동 비활성화 버튼 달기 (0) | 2022.01.27 |
Comments