2011-06-14 2 views
6

우리는 다음 명령으로 cron 작업에서 야간에 백업되는 postgresql 데이터베이스를 가지고 있습니다.postgresql 백업이 성공했는지 확인하는 방법?

su postgres -c "pg_dump our_database | gzip > /home/smb/shared/database_backup.bak.gz" 

최근에 불량 섹터 몇 개로 시작하여 그 동안 pg_dump가 다음 오류로 종료되었습니다.

pg_dump: SQL command failed 
pg_dump: Error message from server: ERROR: catalog is missing 17 attribute(s) from relid 20158 
pd_dump: The command was: LOCK TABLE public.obvez IN ACCESS SHARE MODE 

이제는 cron 작업 중이므로 아무도 오류 메시지를 발견하지 못했습니다. 백업은 중단되었지만 크기가 0이 아니며 모든 것이 정상적으로 보였습니다. 마지막 디스크 오류가 발생할 때까지는 오류가 눈에 띄지 않았습니다. 백업 있어요.

이전 백업에서 데이터를 복원 할 수 있었지만 지금은 pg_dump가 성공 여부를 확인하는 적절한 방법이 무엇인지 알고 싶습니다.

+0

당신은 HTTP에 요청해야합니다 : 당신은 아무것도 잘못되었는지 경우에만 전자 메일을 보내려면, 당신은 pg_dump의의 반환 코드를 확인 할 수 있습니다 // 대신 DBA.stackexchange.com. StackOverflow는 프로그래밍 용입니다. – Jonas

+0

@Jonas 여기 있어야합니다. OP는 오류를 확인하는 방법을 요구하고 있습니다. 그는 데이터베이스를 자동화하려고 시도하지만, 거의 모든 것에 적용될 수 있으므로 DBA로 이동해야하는 이유는 알 수 없습니다. – alexandernst

답변

8

결과를 로그 파일에 기록하고 cronjob의 끝에서 로그 파일의 내용을 내 전자 메일 주소로 보냅니다. 그렇게하면 뭔가 잘못되었을 때를 알 수 있습니다.

su postgres "pg_dump our_database 2>> $LOG_FILE | gzip > /home/smb/shared/database_backup.bak.gz" 
cat $LOG_FILE | mailx $MAINTAINERS -s "Postgresql backup" 

부칙 :

LOG_FILE=/tmp/pgdump.err 

if ! pg_dump -U backupuser "our_database" 2> $LOG_FILE 
then 
    cat $LOG_FILE | mailx 'youremailaddress' -s "Postgresql backup failure!" 
fi 
+1

문제는이 데이터베이스가 실제로 고객 사이트에 있다는 것입니다. 로그 파일을 읽는 방법을 알고있을 것입니다. 나는 이것을 수정할 수 있고 뭔가 잘못되었을 때만 전자 메일을 보낼 수 있다고 생각합니다. –

+1

@Dragan Matic : 아하, 당신은 당신의 원래 메시지에서 언급하지 않았습니다. pg_dump가 "0"(성공)이 아닌 다른 것을 반환했을 때만 메일을 보내도록 예제를 확장했습니다. 또한 백업 할 수있는 전용 "백업 사용자"를 사용하고 sudo 대신 .pgpass를 사용하는 것을 고려해야합니다. 적어도, 나는 그것을 도울 수 있다면 sudo를 좋아하지 않는다.) –

관련 문제