Script de backup do PostgreSQL não funciona

1. Script de backup do PostgreSQL não funciona

Virtuanet
virtuanet

(usa Debian)

Enviado em 15/01/2010 - 14:48h

Olá amigos do VOL,

Estou com um problema num script de backup do banco de dados PostgreSQL 8.3, pois quando rodo o script manualmente, ele funciona e gera o arquivo de backup da base de dados.

Porém quando executado pela cron, o mesmo gera um arquivo vazio.

Imagino que seja algo muito simples que estou deixando passar...

Segue o código do script de backup:

-------------------------------------------
#!/bin/bash

# Script para backup do banco de dados
# Alexandre O. Santos :: Virtuanet Group
# Versao: 1.0

# Formata data para adicionar ao nome dos arquivos
t=`/bin/date +%d-%m-%Y`
t2=`/bin/date +%d%m%Y`
tt=`/bin/date +%H%M`

# Define o destino dos arquivos
dst="/arquivos/backups"

# Cria o diretório do dia se ele não existir
if [ -d $dst/$t ]; then
cd $dst/$t
else
`mkdir $dst/$t`
fi

# Define permissoes de leitura e gravacao para o diretorio
`chown -R postgres:postgres $dst`
`chown -R postgres:postgres $dst/$t`
`chmod 0777 $dst/$t`

su postgres -c "/usr/bin/pg_dump -U postgres -F c -b -v BASE_DE_DADOS > $dst/$t/"BASE_DE_DADOS_"$dst/$t"_"$tt.backup"; >> $dst/$t/backup.log

# Define permissoes de leitura e gravacao para o diretorio
`chown -R postgres:postgres $dst`

-------------------------------------------

E essa é a linha do cron que coloquei para executar o backup automaticamente [/etc/crontab]:

0 12,18 * * 1-5 root /arquivos/scripts/bkp_sistema.sh


Galera, estou usando o Ubuntu 9.04 Server e PostgreSQL 8.3.

Valeu!!!


  


2. Re: Script de backup do PostgreSQL não funciona

nelio
neliobjr

(usa Red Hat)

Enviado em 15/01/2010 - 15:05h

Simples Postgre não presta. rsrs. Brincadeira..

Não sei se é o caso mas no Oracle ocorre o mesmo "problema", se vc não exportar no script os caminhos necessarios.

Por exemplo, no Oracle tenho cadastrado no meu .bash_profile

export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/1020
export PATH=$ORACLE_HOME/bin:$PATH

Preciso colocar a mesma coisa no script para poder rodar na cron, pois a cron não usa o bash do usuario, e fica perdido.

Espero ter ajudado.

Nélio
Dba Oracle.


3. Re: Script de backup do PostgreSQL não funciona

Renato Carneiro Pacheco
renato_pacheco

(usa Debian)

Enviado em 15/01/2010 - 15:36h

Era isso q eu ia falar, só q tem uma maneira mais fácil. No próprio cron, coloque as variáveis dos caminhos no começo do arquivo. Ex.:

PATH=/bin:/sbin:/usr/bin:/usr/sbin
SHELL=/bin/bash

E assim vai. Se vc quiser add mais caminhos, é só colocar lá. Não tem erro.


4. cron

Mark Faro
markfaro

(usa Fedora)

Enviado em 01/09/2010 - 09:31h

Oi Renato Pacheco.
Vi que esse nao eh o unico topico sobre esse problema. Acompanhei outro amigo com o mesmo problema.
Aqui mesmo com as variaveis de ambiente, o problema persiste.

Vou colar pra voce ver:
no crontab -e esta assim:

PATH=/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
SHELL=/bin/bash
MAILTO=root
#min hora data mes dia (0 = domingo, 1= segunda)
15 18 30 8 1 sh /root/script.sh



O Script ta assim:
cd /root/
./backup.sh


e o script backup.sh esta assim:
touch /root/rodei
pg_dump -b -U dba_mmed multimed -F custom | gzip > /arquivos/backup/backup.dmp.gz

fiz separado assim pq estava desesperado com esse cron.
Manualmente roda que eh uma maravilha...mas no cron ele gera o arquivo zerado.
O que vc acha que pode ser?
Agradeco desde ja sua ajuda!

Mark


5. Re: Script de backup do PostgreSQL não funciona

Renato Carneiro Pacheco
renato_pacheco

(usa Debian)

Enviado em 01/09/2010 - 11:06h

Talvez o usuário root não tenha permissão d fazer o dump do Postgres. Tente assim no seu cron:

15 18 30 8 1 postgres sh /root/script.sh

Considerando q o usuário do banco seja postgres.e


6. cron

Mark Faro
markfaro

(usa Fedora)

Enviado em 01/09/2010 - 11:30h

Cara... eu consigo rodar o script manualmente logado como root e eh gerado normalmente.

Colocando o crontab como voce disse ficou assim:
PATH=/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
SHELL=/bin/bash
MAILTO=root
#min hora data mes dia (0 = domingo, 1= segunda)
25 11 1 9 3 postgres sh /root/script.sh


ele nem gerou o arquivo e no tail -f no /var/log/cron apareceu isso:
Sep 1 11:25:01 srvmultimed crond[16644]: (root) MAIL (mailed 246 bytes of output but got status 0x0001 )


Me parece ser o contrario....
Tem mais alguma dica mano?


7. cron

Mark Faro
markfaro

(usa Fedora)

Enviado em 01/09/2010 - 11:33h

Ah... o mais [*****] eh que eu coloquei um touch rodei no script.
Pra me servir como debug... mas...pelo cron ele nao roda o script.
Qdo rodo na mao...dando postgres sh ele roda certinho.



8. Re: Script de backup do PostgreSQL não funciona

Virtuanet
virtuanet

(usa Debian)

Enviado em 01/09/2010 - 11:42h

Galera, já fiz todos os testes listados acima e ainda não consegui resolver o problema. Qualquer novidade posto aqui pra vcs...

Obrigado!


9. Re: Script de backup do PostgreSQL não funciona

Fabio
saraiva.truco

(usa Ubuntu)

Enviado em 04/02/2011 - 20:26h

Boa Noite virtuanet

faz um teste:

muda uma parte do teu script assim:

atual:
su postgres -c "/usr/bin/pg_dump -U postgres -F c -b -v BASE_DE_DADOS > $dst/$t/"BASE_DE_DADOS_"$dst/$t"_"$tt.backup";

alterado
/usr/bin/pg_dump -U postgres -Fc -b -v BASE_DE_DADOS > $dst/$t/"BASE_DE_DADOS_"$dst/$t"_"$tt.backup";

vai no teu scritp e da um chown postgres nele!!!


-------------------------------------------

e em [/etc/crontab] deixa assim:

0 12,18 * * 1-5 postgres /arquivos/scripts/bkp_sistema.sh

Creio que isso resolva teu problema.

Espero ter sido util.


10. Re: Script de backup do PostgreSQL não funciona

DAVISON MARCEL PASQUALINI
fdmarp

(usa Debian)

Enviado em 06/02/2011 - 06:40h

Cara, posso estar errado, mas acho que o que está faltando é acesso.

Qual é a configuração para o seu postgres? De uma olhada no pg_hba.conf ... e me conta como está.

Se o method for md5 ... para logar no banco você tem que digitar a senha ou ter um arquivo .pgpass na home do usuário.

Lembre-se o .pgpass tem que ter a permissão 600.

Bom ... só um chute.

Outra coisa útil seria jogar o $? do comando pra um arquivo.




11. Nao Funicona

Marlon Wiexzbicki
mwiezbicki

(usa Conectiva)

Enviado em 17/09/2011 - 15:11h

#!/bin/bash

echo "*************************************************"
echo "Backup Banco de Dados - SISTEMA SIGAMWEB 2011 *"
echo "*************************************************"

#Gera o nome do arquivo baseado na data/hora atual
NOW=$(date +"%Y-%m-%d__%H-%M")
DUMP_FILE="dt-back-prot-$NOW.dmp"

echo "Gerando $DUMP_FILE..."
pg_dump -U postgres -F c -f $DUMP_FILE propmbc

echo "Backup finalizado ;P"

exit 0


Nao esta funcinando esse script manual ele roda mas no cron nao vai

00 10 * * * backupprot.sh

ele ma da um retorno de erro no arquivo
/var/log/mail
comand not found

Quem puder me ajudar agradeço....






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts