linux 리눅스에서 mysql 자동 백업하기
linux 리눅스에서 mysql 자동 백업하기 cron
==========1 ============
유지보수를 하다보면 DB자동백업을 요청 받는 일이 많다.
나중에 또 찾아보지 않기 위해서 작성해놓으려 한다.
자동으로 DB 백업파일을 만들기 위한 작업이다.
DB 백업하기
$ mysqldump -uroot -p1234 디비명 > 파일명.sql
해당위치에 작성한 파일명으로 파일이 만들어 진다.
Bash shell script
백업 쉘 만들기
vi db_backup.sh
#!/bin/bash
DATE=$(date +%Y%m%d)
BACKUP_DIR=/home/test/
mysqldump -u root -p1234 디비명 > $BACKUP_DIR"파일명_"$DATE.sql
BACKUP_DIR에 파일이 저장될 경로를 써주어 파일명 앞에 경로를 설정해주었고
해당날짜를 파일명 끝에 적기 위해서 $(date +%Y%m%d) 로 년월일을 DATE값에 넣어서 파일명에 붙여주었다.
위에 같이 쉡파일을 만들면 /home/test/ 밑에 파일명_해당날짜.sql로 덤프를 만들겠다는 뜻이다.
작업 명령 이용 방법
* * * * * /home/test/db_backup.sh
*하나하나가 분 시간 날짜 달 요일 이다. 구분은 Space로 한다.
요일은 1부터 월요일이고 6이 토요일 이다.
$crontab -e
crontab -e 해서 수정 삭제 등록 가능하다
아래와 같이 크론식 맞춰서 적어주면
30 2 * * 6 /home/test/db_backup.sh
내용을 입력하세요.
매주 토요일 오전 2:30분에 실행한다는 뜻
cron 등록 확인
$ crontab -l
하면 정상적으로 스케쥴이 등록되어서 덤프가 떠지는 것을 확인 할 수 있다.
======================================================================
1. mysql 백업 스크립트 작성
# mkdir /backup
백업된 sql을 저장할 디렉터리를 만든다
# chmod 755 backup
755권한준다
# vi /root/backup.sh
백업 스크립트를 작성한다
---------- backup.sh ------------
#!/bin/sh
DATE=`date +"%Y%m%d"`
PREV_DATE=`date --date '5 days ago' +"%Y%m%d"`
/usr/bin/mysqldump -u사용자id -p비번 DB명 > /backup/mysql_db_bak_${DATE}.sql
chown root.root /backup/mysql_db_bak_${DATE}.sql
chmod 755 /backup/mysql_db_bak_${DATE}.sql
rm -Rf /backup/mysql_db_bak_${PREV_DATE}.sql /*5일 지난거 삭제*/
------------- 또는 -----------------
#!/bin/sh
DATE=$(date +%Y%m%d)
BACKUP_DIR=/home/db_backup/
mariadb-dump -u zabbix -pzabbix zabbix > $BACKUP_DIR"zabbix-backup_"$DATE.sql
find $BACKUP_DIR -ctime +3 -exec rm -f {} \;
------------ 또는 -------------
#!/bin/sh
mysqldump -h localhost -u root -pmypassword --all-databases --routines > /backup/`date '+%a'`.sql
#now create cron script smth like this
#crontab -e
#30 07 * * * /backup/backup.sh 2>&1>> /backup/dump.log
#The above will dump the database every day at 07:30
-------------------------------------------------------------
만약, 전체 DB를 백업하려면
mysqldump -u사용자id -p비번 [DB명] -> mysqldump -u사용자id -p비번 -e --all-databases
로 바꾸면 된다.
# chmod 100 /root/bakcup.sh
변경방지 위해 실행권한 만 갖추게함
# ./root/backup.sh
테스트로 스크립트를 한 번 실행해 보자. backup 디렉토리에 백업sql이 생성됐으면 성공.
2. CronTab에 작업 등록하기
# crontab -e
크론 탭 작성모드로 실행
00 04 * * * /root/bakcup.sh
백업 스크립트를 매일 4시 작업으로 등록
# /etc/rc.d/init.d crond restart
크론 데몬 재실행
# crontab -l
크론탭 작업 리스트 확인