crontab에서 mysqldump 쉘 스크립트 문제
작성자 정보
- 김동현 작성
- 작성일
컨텐츠 정보
- 3,749 조회
- 4 댓글
- 0 추천
- 목록
본문
crontab 을 이용해서 쉘스크립트를 불러와서 mysqldump 를 이용해 백업하는 스크립트를 짜봤습니다. 그냥 ./db_backup.sh 로 실행하면 정상적으로 백업이 되는데 크론탭에서 실행이되면 디렉토리까지는 만들어지는데 파일들의 용량이 0 으로 백업 됩니다.
--------------------------------------------------------------------------------------------------
* /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/
00 6 * * * root /root/sbin/db_backup.sh #매일 06:00 DB 백업,7일전DB데이타삭제
--------------------------------------------------------------------------------------------------
* /root/sbin/db_backup.sh
#!/bin/sh
# export PATH=/bin:/sbin:/usr/bin:/usr/sbin
today=`date +%Y%m%d` #오늘날짜
delete_date=`date +%Y%m%d --date='7 days ago'` #삭제날짜(7일전날짜)
logdir="/home2/backup_log/" #로그디렉토리
dbdir="/home2/db_backup/" #DB백업받을상위디렉토리
dirname="/home2/db_backup/${today}" #백업을 위해 만들 디렉토리명
logname="log_db_backup_${today}" #로그백업파일명
del_logname="log_home_backup_${delete_date}" # 지울로그파일명
rm -f $logdir$del_logname #7일전 로그파일 삭제
rm -rf $dbdir$delete_date #7일전 DB디렉토리 삭제
# create db backup log
echo "############ db backup in `date` ############" >> $logdir$logname
echo "" >> $logdir$logname
echo "start backup" >> $logdir$logname
echo "" >> $logdir$logname
mkdir $dbdir$today #DB백업디렉토리생성
chmod 777 $dbdir$today #생성된 디렉토리권한설정(777ㅡ,.ㅡ;;)
# DB 백업시작
mysqldump -u root -p5w253fakd namadb > $dirname/namadb.sql
mysqldump -u root -p5w253fakd ota > $dirname/ota.sql
mysqldump -u root -p5w253fakd schooldb > $dirname/schooldb.sql
mysqldump -u root -p5w253fakd sintekdb > $dirname/sintekdb.sql
mysqldump -u root -p5w253fakd soottile > $dirname/soottile.sql
mysqldump -u root -p5w253fakd test > $dirname/test.sql
mysqldump -u root -p5w253fakd testdb > $dirname/testdb.sql
mysqldump -u root -p5w253fakd wrb88db > $dirname/wrb88db.sql
mysqldump -u root -p5w253fakd youngz > $dirname/youngz.sql
mysqldump -u root -p5w253fakd zipdb > $dirname/zipdb.sql
mysqldump -u root -p5w253fakd lows > $dirname/lows.sql
# DB 백업 끝
echo "" >> $logdir$logname
ls -l $dirname >> $logdir$logname # 생성된 디렉토리의 파일정보를 로그파일에 저장
echo "" >> $logdir$logname
echo "home backup complete...." >> $logdir$logname
이렇습니다.
/home2/backup_log 에 로그파일을 작성,
/home2/db_backup 에 오늘날짜(예:20071102) 디렉토리를 만들고 그안에 db 단위로
mysqldump 백업을 받게 만들었는데 그냥 프롬프트에서 실행하면 정상적으로 백업되는데
크론탭에서 읽혀서 백업할때는 파일크기가 0 으로 쭈욱 백업됩니다
고수님들 답변 부탁드립니다.
OS 는 CentOS, DB는 MYSQL 백업할db는 42개입니다.
관련자료
-
이전
-
다음
막둥이님의 댓글
- 막둥이
- 작성일
00 06 * * * su - root -c '/root/sbin/db_backup.sh'
로 변경해서 시작해 보세요.
김동현님의 댓글
- 김동현
- 작성일
문제는 mysqldump 명령을 그냥 넣지말고
/usr/local/mysql-4.1.18/bin/mysqldump -u root -pjtw cch1 > /backup/cch1.sql
이런식으로 mysqldump 의 위치를 절대경로로 입력하여 주시면 정상적인 백업이 가능합
니다.
devinfo님의 댓글
- devinfo
- 작성일
db.backup.sh 에서 수정하라는 말씀이신가요?
devinfo님의 댓글
- devinfo
- 작성일