Você está na página 1de 2

9.

1 - Backup e Restore do Postgresql


Administração

Com uma boa manutenção o administrador melhora o desempenho do SGBD, garante a


integridade dos dados, a sua segurança e os próprios dados.

Especialmente quem já teve problemas em HDs e não pode recuperar os dados, sabe da
importância dos backups.

Para efetuar backup e restore utilizamos o comando pg_dump em conjunto com o psql.

Obs.: O pg_dump não faz backup de objetos grandes (lo) por default. Caso desejemos
também estes objetos no backup devemos utilizar uma saída no formato tar e utilizar a
opção -b.

pg_dump -Ftb banco > banco.tar

Backup local de um único banco:

pg_dump -U usuario -d banco > banco.sql

pg_dump -Ft banco > banco.tar

O script normalmente leva a extensão .sql, por convenção, mas pode ser qualquer
extensão e o script terá conteúdo texto puro.

Restore de um banco local:

psql -U usuario -d banco < banco.sql

pg_restore -d banco banco.sql

pg_restore -d banco banco.tar

Obs.: Cuidado ao restaurar um banco, especialmente se existirem tabelas sem


integridade. Corre-se o risco de duplicar os registros.

Descompactar e fazer o restore em um só comando:

gunzip -c backup.tar.gz | pg_restore -d banco

ou

cat backup.tar.gz | gunzip | pg_restore -d banco

(o cat envia um stream do arquivo para o gunzip que passa para o pg_restore)
Backup local de apenas uma tabela de um banco:

pg_dump -U nomeusuario -d nomebanco -t nometabela > nomescript

Restaurar apenas uma tabela

Para conseguir restaurar apenas uma tabela uma forma é gerar o dump do tipo com tar:

pg_dump -Ft banco -f arquivo.sql.tar

pg_restore -d banco -t tabela banco.sql.tar

Backup local de todos os bancos:

pg_dumpall -U nomeusuario -d nomebanco > nomescript

Backup remoto de um banco:

pg_dump -h hostremoto -d nomebanco | psql -h hostlocal -d banco

Backup em multivolumes (volumes de 200MB):

pg_dump nomebanco | split -m 200 nomearquivo

m para 1Mega, k para 1K, b para 512bytes

Importando backup de versão anterior do PostgreSQL

Instala-se a nova versão com porta diferente (ex.: 5433) e conectar ambos

pg_dumpall -p 5432 | psql -d template1 -p 5433

Você também pode gostar