postgreSQL백업을 crontab을 이용하여 돌릴려구 하는데...
글쓴이: kn31232 / 작성시간: 화, 2004/08/03 - 1:52오후
#!/bin/bash date >> pg_backup.log su - postgres -c "/usr/local/pgsql/bin/pg_dumpall > /usr/local/pgsql/`date m%d`.sql"
Shell스크립트의 내용은 이렇구요...
Crontab설정은
45 13 * * * /bin/sh /root/bin/pg_backup
이렇습니다.
음....그냥 스크립트를 실행시키면 잘 동작을 하는데....
crontab으로는 작동을 하지가 않는군요...
물론 /var/log/cron에도 로그가 남습니다.
Aug 3 13:45:00 imagemate2 CROND[21912]: (root) CMD (/bin/sh /root/bin/pg_backup)
이렇게요...음....혹시 왜 crontab으로는 로그만 남고 작동을 하지 않는지 아시는분 계신가요??
Forums:
[code:1]45 13 * * * /root/bin/pg_backup[
45 13 * * * /root/bin/pg_backup
이렇게 하면 어떨까요?
^^;;
....
음..이것저것 방법을 달리해도 계속 그렇게 되네요...^^;;
셀을 바꿔서 실행해봐도....지워봐두...
계속 로그만 남을뿐 실행은 되지 않으니...
어거 어찌할 노릇인지....ㅠ.ㅠ
飛上
PATH 설정 문제일 수도 있습니다.date나 su의 절대경로를
PATH 설정 문제일 수도 있습니다.
date나 su의 절대경로를 넣어줘보세요.
그리고 su 대신에 sudo를 쓰는 건 어떨까요?
아예 이 script를 root 권한 대신에 postgres 권한으로 돌리시거나요.
[quote]PATH 설정 문제일 수도 있습니다. date나 su
혹 PATH의 문제라면 일반 콘솔에서 실행시켰을경우도 같은 경우가 나와야 하지 않을까요...??(그냥 스크립트를 실행시키면 잘돌아간답니다~ :lol: )
음...그리구 권한같은경우도 물론...바꿔서 해봤지요.... :(
휴~ 왜 이런 문제가 발생하는걸까요? 당황스럽네요...... :oops:
飛上
...
PATH 설정 문제가 맞습니다...
crontab 내에
절대경로로 지정해주시면 해결됩니다....
---------------------------------------------------
야!...
% man 5 crontab..cron으로 수행될 때 PATH 값
% man 5 crontab..
cron으로 수행될 때 PATH 값은 기본적으로 "/usr/bin:/bin"으로 설정됩니다.
date나 su 명령이야 /bin에 있으니 상관없겠지만 pg_dumpall 등의 명령에는 영향을 주겠죠? 확인해보세요.
cron 관련 문제는 permission과 PATH 설정 문제가 대부분이죠. :)
crontab의 내요은...[code:1]45 13 * * * /
crontab의 내요은...
45 13 * * * /bin/sh /root/bin/pg_backup
처음부터 절대경로였습니다. :)
Shell script인...
이곳 역시 절대경로를 사용하였구요...
정말 답답하시죠...?? :lol: 전 환장하겠어요~~~ :twisted:
飛上
crontab에 45 13 * * * /usr/local/pgsq
crontab에
45 13 * * * /usr/local/pgsql/bin/pg_dumpall > /usr/local/pgsql/back.sql
로 해보세요...
권한설정때문에 절대경로 지정을 crontab 안에 위치하도록 말씀드린거구요...
그러면 적당히 arg 를 받아 경로지정하는 스크립트가 만들어지겠지요...
그럼...
---------------------------------------------------
야!...
[code:1]45 13 * * * /usr/local/pgsql/bin
45 13 * * * /usr/local/pgsql/bin/pg_dumpall > /usr/local/pgsql/back.sql
orangecrs님께서 말씀해주신데로 적어서 우선 성공은했습니다!! :D
음~ 근데 여기서 date라는 명령어는 같이 사용 못하나요??
이것저것 방법을 써봐두 쉘명령어를 같이 쓰지는 못하는것 같네요....
혹시 방법이 있으시다면 한수 가르쳐주세요 :wink:
飛上
shell script 내의 pg_backup.log 파일이 절대경로가
shell script 내의 pg_backup.log 파일이 절대경로가 아닌데요? :(
좀 다른 얘기지만.. -.-;http://www.postgresql.
좀 다른 얘기지만.. -.-;
http://www.postgresql.or.kr/wiki.php/nonun/Documents/Slony-1
멀티슬레이브 리플리케이션입니다. 싱크 시간을 변경할 수 있습니다. 어떤 슬레이브는 1분, 어떤 슬레이브는 1시간 전의 정보를 유지하게 할 수도 있습니다..
음...
제가 깜박했군요... cron을 설정해본지가 오래되나서...
그냥 하신대로 쉘스크립트에서 절대경로 지정을 하면 되는데요...
올려주신 쉘스크립트가 잘못된 것 같네요... 날짜지정에서...(또 날짜 지정하실때 쉘스크립터에서 ` 를 '로 잘못 쓰셨네요... 복사 &붙이기해서 텀에서 하이라이팅보고 틀린걸 알았습니다...) 그리고 생각해보니
권한설정을 su로 postgres로 해주셨는데 /usr/local/pgsql의 디렉토리 권한이 어떻게 되어있는지 몰라도 올려주신 소스로는 안될듯하네요...
쉘을 고친다면
로하고 chmod 700 pg_backup이후
root권한으로 crontab -e 에서
45 13 * * * /root/bin/pg_backup
를 추가 하시면 무난할듯 보입니다...
참고로 전 vixie-cron쓰고요 제 mysql data 를 위의 방법으로 지금 돌려보니
문제없이 잘돌아가네요....
그럼...
---------------------------------------------------
야!...
2004. 08. 04. (수) 09:39:46 KST2004. 08
2004. 08. 04. (수) 09:39:46 KST
2004. 08. 04. (수) 09:40:12 KST
Wed Aug 4 09:43:00 KST 2004 <-- crontab으로 돌렸을때 pg_backup에 저장되는 date내용
2004. 08. 04. (수) 09:46:02 KST <-- 그냥 스크립트를 실행시켰을경우에 pg_backup에 저장되는 date내용
Wed Aug 4 10:04:00 KST 2004
왜 틀리죠??
참 그리구..postgreSQL의 명령어는 root로는 실행할 수 가 없어서
postgres라는 계정으로 su 해서 사용하는거랍니다....ㅜ.ㅡ
그리구...저렇게 해두 잘 되지가 않네요.....;;;;;
참~ nonun님!!
Slony-i에 대한 자료 더 알고 계신거 있으면 공유 부탁드립니다!! :D
飛上
date 내용이 한글과 영문으로 나오는 건 로케일 때문에 그렇습니다 :)
date 내용이 한글과 영문으로 나오는 건 로케일 때문에 그렇습니다 :)
스크립트 내에서 LANG, LC_ALL 을 C 로 바꿔놓으면 영문으로만 나오게 됩니다. 근데 그런 상황을 피하는 방법은:
띄어쓰기도 없고 쓸만하겠죠. ㅎ_ㅎ 시간을 빼버리려면 _ 뒤를 지워버리면 됩니다. 더 자세한 내용은 date --help ~
그리고 postgres 계정으로 crontab 을 돌릴때는 /etc/crontab 에 계정을 설정해줄 수가 있습니다. 데비안의 /etc/crontab 에는 이렇게 쓰여 있네요.
여섯번째 항에 있는 root를 postgres로 바꾸고 하면 됩니다.
crontab에도 모두 절대경로, 실행하시는 스크립트도 모두 절대경로로 써 두시면 문제없이 잘 돌아갈 것 같습니다. :P
아, 그리고 crontab 로그는 해당 사용자 계정으로 메일이 날라갑니다
아, 그리고 crontab 로그는 해당 사용자 계정으로 메일이 날라갑니다.
root 시라면 mutt 혹은 mail 을 한번 쳐 보세요. ㅎ_ㅎ 메일이 잔~~~~뜩 와있을거예요.
결국은 해결했습니다....만...이유는 알수가 없습니다...왜 이
결국은 해결했습니다....
만...이유는 알수가 없습니다...왜 이런 문제가 발생하는지에 대해서요... :oops:
음...우선... postgres 계정의 crontab 내용입니다.
mydate.sh는 단순히 시간을 얻어오는 스크립트구요...
음....
해결은 하긴 했지만 영...찜찜하네요....왜 이러는지 이유를 알 수 없으니까요.... :cry:
그래도 해결은 했으니까.... :twisted:
飛上
댓글 달기