backup diário do Postgresql

3

Existe alguma maneira simples de fazer backup de todos os seus bancos de dados locais diariamente (mesmo servidor postgresql)? Eu encontrei alguns scripts bash que eu posso usar, mas eles parecem muito complexos para tal trabalho.

Alguma sugestão fácil?

    
por danidacar 16.03.2011 / 11:03

4 respostas

7

Como meus bancos de dados são bem pequenos, eu "trapaceio" e uso logrotate para fazer meus backups postgresql. Algo parecido com isto em /etc/logrotate.d/postgresql-backup:

/var/backups/postgresql-dump.sql {
        daily
        nomissingok
        rotate 30
        compress
        delaycompress
        ifempty
        create 640 root adm
        dateext
        postrotate
                /usr/bin/sudo -u postgres /usr/bin/pg_dumpall --clean > /var/backups/postgresql-dump.sql
        endscript
}

Isso me fornece um despejo completo convenientemente disponível, com menos de um dia de uso, e compacta e gira automaticamente as lixeiras anteriores.

Obviamente, isso não vai escalar com bancos de dados maiores, mas para o meu propósito é quase perfeito. (Eu também uso o BackupPC para lidar com backups externos que incluem os backups postgresql locais)

    
por 16.03.2011 / 22:13
1

Se você tiver /etc/cron.daily, coloque lá um verso que chama pg_dumpall .

Nota: esta é a maneira mais simples, mas cria um script SQL descompactado, para ser executado a partir do psql.

Para compactar, gzip (mais rápido), bzip2 ou lzma (saída mais lenta e menor)

Manter uma cópia diferente por cada dia da semana pode ser suficiente em casos simples. Armazenar backups semanais, mensais ou incrementais depende de você.

Suponho que os scripts complexos que você viu façam backup dos bancos de dados em formato binário usando o pg_dump / pg_restore, que é mais flexível.

    
por 16.03.2011 / 11:05
1

Eu configurei meu backup diário assim:

mkdir /home/dbdump

vim /etc/cron.daily/dbdump

#!/bin/sh
pg_dumpall --globals-only --username=postgres > /home/dbdump/globals.dump
pg_dump --format=custom --username=postgres > /home/dbdump/postgres.dump

chmod 700 /etc/cron.daily/dbdump

Eu então uso o rsnapshot de um site diferente para manter cópias desses dumps

O motivo pelo qual optei por não usar o pg_dumpall é que o pg_dump tem mais opções flexíveis . Você precisará usar vários comandos pg_dump se tiver vários bancos de dados

    
por 16.03.2011 / 12:14
0

Eu uso autopgsqlbackup (porta PostgreSQL do automysqlbackup), também instalável como Pacote Debian .

    
por 24.08.2015 / 14:38