질문&답변
클라우드/리눅스에 관한 질문과 답변을 주고 받는 곳입니다.
리눅스 분류

crontab에서 mysqldump 쉘 스크립트 문제

작성자 정보

  • 김동현 작성
  • 작성일

컨텐츠 정보

본문

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개입니다.

관련자료

댓글 4

막둥이님의 댓글

  • 막둥이
  • 작성일
crontabl에

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
  • 작성일
저도 동일 증상인데.. mysqldump 명령을 그냥 넣지 말고  위치를 절대 경로로 입력해주라고 햇는데
db.backup.sh 에서 수정하라는 말씀이신가요?

devinfo님의 댓글

  • devinfo
  • 작성일
저와 동일 증상.

공지사항


뉴스광장


  • 현재 회원수 :  60,303 명
  • 현재 강좌수 :  36,968 개
  • 현재 접속자 :  407 명