Tenho um banco 9.3 apenas com uma base de dados, quando faço dump nesta
base de dados o arquivo fica apenas com 150MB, mas quando faço dump_all
o arquivo fica com 2,1GB

Segue abaixo comando utilizados:
pg_dumpall -h localhost -p 5432 -U postgres -v -f /backup/dumpall.backup
pg_dump -h localhost -p 5432 -U postgres -F c -v -f /backup/dump.backup base

O segundo comando faz backup apenas do banco de dados postgres, pois não foi passado o nome do banco de dados.

Esta diferença toda é devido ao pg_dumpall não compactar o arquivo gerado?

A compactação faz a diferença, mas acho que no seu caso faltou especificar o nome do banco.

Pesquisando na internet recomendaram fazer o seguinte:

  * |pg_dumpall --globals-only| (para obter users/roles/etc)
  * |pg_dump -Fc (para cada base de dados)|

É uma boa estratégia, pois a restauração a partir dos arquivos custom pode ser feita usando o modo paralelo do pg_restore.

Mas esta estratégia deixa brechas para falhas, se alguém alterar o nome
de alguma base ou criar uma nova e esquecer de alterar a rotina de dump !!!

Pois é...

Qual a melhor solução?

A que melhor lhe atender, além de utilisar também a estratégia de backup físico com possibilidade de PITR:
http://www.postgresql.org/docs/9.3/static/continuous-archiving.html

E leia sempre a bíblia do backup PostgreSQL brasileiro:
http://softwarelivre.org/telles/blog/dump-nao-e-backup

[]s
Flavio Gurgel
_______________________________________________
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a