오늘 crontab으로 DB 백업 설정을 하다가
이 문제로 삽질을 해서 간단하게 정리해보았다.
내가 작성한 스크립트는 간단하게
mysqldump -uroot screencast > /Users/mickey/backup/$(date +%Y-%m-%d).sql
이렇게 되어있었다.
당연히 스크립트를 그냥 실행했을때는 잘 동작하였고
매일 새벽 1시에 돌게 하려고 crontab에 아래와 같이 등록하였다.
00 01 * * * /Users/mickey/projects/screencast/backup.sh
그런데 나중에 확인해보니 백업 파일 사이즈가 전부 0 이었다!!
당황스러워서 이것저것 구글링을 해보면서 삽질을 하다가
stackoverflow에서 힌트를 찾았다.
http://stackoverflow.com/questions/4995689/mysqldump-creates-empty-file-when-run-via-cron-on-linux
이걸 보면 스크립트 뒤에 2>&1 이걸 붙여서 로그를 확인해보라고 되어있었다.
역시 에러가 날땐 로그를 확인해봐야 하는데 나는 그냥 삽질만 하고 있었다...
그래서 위의 스크립트를 수정해서
mysqldump -uroot screencast > /Users/mickey/backup/$(date +%Y-%m-%d).sql 2>&1
이렇게 하고 돌렸더니 백업 파일에 에러 로그가 나왔다.
mysqldump 파일을 못찾는다는 에러였다.
그냥 bash 에서는 path에 설정이 되어 있어서
잘 동작하였지만 crontab으로 돌릴때는 path 설정이 안 먹히는것 같다.
그래서 아래와 같이 full path로 수정하니 잘 동작하였다.
/usr/local/bin/mysqldump -uroot screencast > /Users/mickey/backup/$(date +%Y-%m-%d).sql
오늘의 교훈은..
1. 에러가 날땐 로그를 잘 확인하자.
2. crontab으로 돌릴때 안전하게 full path를 다 써주자.
이 문제로 삽질을 해서 간단하게 정리해보았다.
내가 작성한 스크립트는 간단하게
mysqldump -uroot screencast > /Users/mickey/backup/$(date +%Y-%m-%d).sql
이렇게 되어있었다.
당연히 스크립트를 그냥 실행했을때는 잘 동작하였고
매일 새벽 1시에 돌게 하려고 crontab에 아래와 같이 등록하였다.
00 01 * * * /Users/mickey/projects/screencast/backup.sh
그런데 나중에 확인해보니 백업 파일 사이즈가 전부 0 이었다!!
당황스러워서 이것저것 구글링을 해보면서 삽질을 하다가
stackoverflow에서 힌트를 찾았다.
http://stackoverflow.com/questions/4995689/mysqldump-creates-empty-file-when-run-via-cron-on-linux
이걸 보면 스크립트 뒤에 2>&1 이걸 붙여서 로그를 확인해보라고 되어있었다.
역시 에러가 날땐 로그를 확인해봐야 하는데 나는 그냥 삽질만 하고 있었다...
그래서 위의 스크립트를 수정해서
mysqldump -uroot screencast > /Users/mickey/backup/$(date +%Y-%m-%d).sql 2>&1
이렇게 하고 돌렸더니 백업 파일에 에러 로그가 나왔다.
mysqldump 파일을 못찾는다는 에러였다.
그냥 bash 에서는 path에 설정이 되어 있어서
잘 동작하였지만 crontab으로 돌릴때는 path 설정이 안 먹히는것 같다.
그래서 아래와 같이 full path로 수정하니 잘 동작하였다.
/usr/local/bin/mysqldump -uroot screencast > /Users/mickey/backup/$(date +%Y-%m-%d).sql
오늘의 교훈은..
1. 에러가 날땐 로그를 잘 확인하자.
2. crontab으로 돌릴때 안전하게 full path를 다 써주자.