Pular para o conteúdo

Backup semanal/mensal/anual do PostgreSQL

Dica publicada em Linux / Backup
Thiago Henrique F. Margonar thiagomargonar
Hits: 16.886 Categoria: Linux Subcategoria: Backup
  • Indicar
  • Impressora
  • Denunciar

Backup semanal/mensal/anual do PostgreSQL

Iae turma, tranquilo?

Ontem, tive que dar uma estudada para realizar backups através de script no PostgreSQL 8.3 automaticamente. Após concluir, achei que seria legal compartilhar com vocês.

Não vou abordar sobre como instalar o PostgreSQL, somente mesmo a geração do backup. Vamos lá.

Imaginando que já estamos com o PostgreSQL 8.3 instalado e funcionando. No meu caso, o PostgreSQL está instalado em:

# cd /opt/PostgreSQL/8.3/

Dentro desta pasta, eu criei uma chamada script:

# mkdir script

Dentro da pasta script, salve os arquivos:

# vim semanal.sh

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

date +%A > "/postgres/script/data.txt" # Pega o nome do dia e salva no arquivo "data.txt"
data=$(cat /postgres/script/data.txt) # Pega o conteúdo gravado no "data.txt"
/opt/PostgreSQL/8.3/bin/pg_dump -h IP_D0_SERVIDOR -U postgres BANCO_PARA_BACKUP > /postgres/$data.sql& # Começa o backup
exit

# vim mensal.sh

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

date +%B > "/postgres/script/data.txt" # Pega o nome do mes e salva no arquivo "data.txt"
data=$(cat /postgres/script/data.txt) # Pega o conteudo gravado no "data.txt"
/opt/PostgreSQL/8.3/bin/pg_dump -h IP_D0_SERVIDOR -U postgres BANCO_PARA_BACKUP > /postgres/$data.sql& # Começa o backup
exit

# vim anual.sh

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

date +%Y > "/postgres/script/data.txt" # Pega o numero do ano e salva no arquivo "data.txt"
data=$(cat /postgres/script/data.txt) # Pega o conteudo gravado no "data.txt"
/opt/PostgreSQL/8.3/bin/pg_dump -h IP_D0_SERVIDOR -U postgres BANCO_PARA_BACKUP > /postgres/$data.sql& # Começa o backup
exit

Bom, feito estes scripts, vamos dar permissão:

# chmod +x *.sh

Agora, vamos agendar os scripts no crontab:

# vim /etc/crontab

#min hora dia mês ano usuário script

00 17 * * * root /postgres/semanal.sh
00 18 30 * * root /postgres/mensal.sh
00 19 30 12 * root /postgres/anual.sh


Pronto, agora você terá um backup semanal, mensal e anual do banco de dados PostgreSQL.

Espero ter ajudado.

Compartilhamento simples de arquivos com Samba no CentOS 6.4

Acessando seu Ubuntu por um terminal Windows de outra rede

Funções em Shell Script

CentOS + xrdp - Acessando CentOS pelo Windows (Acesso remoto da área de trabalho com "Mstsc.exe")

Instalando Ruby on Rails no CentOS

Armazenamento em nuvem redundante com Dropbox e Copy

Reinstalando pacotes no Ubuntu pós-formatação

Backup incremental com cp

Criação de stage4 do Funtoo/Gentoo

Instalação Bacula 7.4.4 e Webmin - Ubuntu Server 16.04

#1 Comentário enviado por thiagomargonar em 27/01/2014 - 16:03h
Desculpe gente, no crontab eu não tinha corrigido o caminho das pasta.

o caminho correto para cada script no caso acima é:
/postgres/script/script.sh
#2 Comentário enviado por thiagomargonar em 21/03/2014 - 14:14h
Restaurando um backup.sql
Na pasta bin onde o postgres foi instalado execute:
./psql -U usuario -d banco < banco.sql
ou
./pg_restore -d banco banco.sql
pg_restore -d banco banco.tar

Contribuir com comentário

Entre na sua conta para comentar.