Automatizar backup do PostgreSQL

Publicado por Glaucio Klipel 24/01/2007

[ Hits: 29.932 ]

Download backup2.sh




Este script é uma modificação do script de backup do PostgreSQL postado por Jairo Tcatchenco.

Após testar o script postado obtive alguns erros e modifiquei o código para adaptar ao meu banco. O script lista todas as bases do Postgree e exclui a "template0" e "template1", salvando em arquivos individuais separados por nome dos bancos.

Ainda cria pastas com nome de data e cria os arquivos com nome de data e hora.

Espero ter ajudado e créditos a Jairo Jairo Tcatchenco!
http://www.vivaolinux.com.br/~jtcatchenco

  



Esconder código-fonte

#!/bin/sh

# Script para backup dos bancos de dados

# Executa vaccum no banco
su postgres -c "/usr/bin/vaccumdb -a -z -f -q"

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

# Define o destino dos arquivos
DST="/opt/data/backup/$t"

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

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

# Loop para gerar arquivos dump
for i in `psql -l -U postgres | cut -f 2 -d " " -s`; do
    if [ $i != template1 -a $i != template0 -a $i != "rows)" -a $i != postgres ]; then
        su postgres -c "/usr/bin/pg_dump -h localhost -U postgres -c -d -F -f $DST/$t/$i"_"$t"_"$tt.bkp -Z 1 $i";
    fi
done

Scripts recomendados

Backup com rsync em maquina da rede.

Codecs DVD no Ubuntu

Troca de imagem da tela de bloqueio de usuário no Linux Mint MATE

Dump de várias tabelas do MYSQL em vários arquivos

Tags de Cores e formatação no Terminal


  

Comentários
[1] Comentário enviado por jtcatchenco em 25/01/2007 - 12:01h

Bom! Muito bom!
A única observação é que o postgresql 8.1.# já tem na sua configuração o autovacuum. No caso dele estar habilitado, não seria necessária a linha

# Executa vaccum no banco
su postgres -c "/usr/bin/vaccumdb -a -z -f -q"

Abraços.

[2] Comentário enviado por glaucioklipel em 25/01/2007 - 12:42h

Valeu velho, ainda tenho um longo caminho em linux e bancos de dados ehheheeh

Abraços!

[3] Comentário enviado por diekn em 22/05/2007 - 21:31h

Blz,cara,vou testar pra ver.

[4] Comentário enviado por henriquemeira em 20/03/2010 - 22:35h

Contribuição estúpida...

Na criação do diretório, incluir o parametro -p ao mkdir para criar as pastas recursivamente:

`mkdir -p /opt/data/backup/$t`

valeu!

[5] Comentário enviado por paulopewera em 20/09/2012 - 16:33h

boa tarde
sou iniciante no linux e estou tentando usar esse script no CentoOs 5.8 mas quando vou executar ele apresenta o seguinte erro

[root@localhost Backup]# sh backup.sh
'ackup.sh: line 29: syntax error near unexpected token `do
'ackup.sh: line 29: `for i in `psql -l -U postgres | cut -f 2 -d " " -s`; do

se tiver alguma dica agradeço

Valeu

[6] Comentário enviado por glaucioklipel em 20/09/2012 - 18:23h


'ackup.sh: line 29: `for i in `psql -l -U postgres | cut -f 2 -d " " -s`; do


É impressão minha ou há um ` antes do for? Confere no script que acho que é isso.


[7] Comentário enviado por fabio.telles em 11/12/2012 - 08:42h

Vale a pena lembrar que backup em banco de dados vai muito alem do Dump. Você precisa na verdade de uma estratégia de backup, e principalmente uma estratégia de RESTORE.

Vide artigo: "Dump não é backup": http://tellesr.com/dump-nao-e-backup/

[8] Comentário enviado por glaucioklipel em 11/12/2012 - 10:14h

Obrigado pela correção Fabio, claro que esse script não é capaz de abrir um guarda-chuva ou dar pernas ao servidor pra correr em caso de incêndio. Então podemos chamá-lo de dump e só.

Valeu.

[9] Comentário enviado por samuel_pc7 em 21/11/2014 - 18:37h

amigo a unica coisa que mudei no seu escript foi o endereço "localhost" para "IpDoMeuServidor"
porem esta dando essa mensagem..
psql: FATAL: autentica??o do tipo peer falhou para usu?rio "postgres"
sabe me dizer como posso resolver?

[10] Comentário enviado por samuel_pc7 em 21/11/2014 - 19:36h


[9] Comentário enviado por samuel_pc7 em 21/11/2014 - 18:37h:

amigo a unica coisa que mudei no seu escript foi o endereço "localhost" para "IpDoMeuServidor"
porem esta dando essa mensagem..
psql: FATAL: autentica??o do tipo peer falhou para usu?rio "postgres"
sabe me dizer como posso resolver?

Esse erro de cima consegui resolver agora esta aparecendo este..

bash: -c: line 0: erro de sintaxe próximo do `token' não esperado `)'
bash: -c: line 0: `/usr/bin/pg_dump -h 186.202.178.165 -U postgres c -d -F -f /opt/data/backup/211114/211114/registros)_211114_193559.bkp -Z 1 registros)'

[11] Comentário enviado por glaucioklipel em 21/11/2014 - 22:41h

/opt/data/backup/211114/211114/registros)_211114_193559.bkp -Z 1 registros)'

Tire todos os ) e troque os ' por crase, ou tire a crase e troque por inicial $( e feche com )


[12] Comentário enviado por rengaf1 em 16/03/2017 - 09:16h

ao executar o backup dava esse erro

bash: /usr/bin/vaccumdb: Arquivo ou diretório não encontrado
psql: FATAL: autenticação do tipo peer falhou para usuário "postgres"

alterei a linha su postgres -c "/usr/bin/vaccumdb -a -z -f -q"

ao invés de vaccumdb troquei por vacuumdb

e tudo funcionou filé!


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts