Você está na página 1de 2

9.

1 - Backup e Restore do Postgresql


Administrao
Com uma boa manuteno o administrador melhora o desempenho do SGBD, garante a
integridade dos dados, a sua segurana e os prprios dados.
Especialmente quem j teve problemas em HDs e no pode recuperar os dados, sabe da
importncia dos backups.
Para efetuar backup e restore utilizamos o comando pg_dump em conjunto com o psql.
Obs.: O pg_dump no faz backup de objetos grandes (lo) por default. Caso desejemos
tambm estes objetos no backup devemos utilizar uma sada no formato tar e utilizar a
opo -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 extenso .sql, por conveno, mas pode ser qualquer
extenso e o script ter contedo 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 verso anterior do PostgreSQL


Instala-se a nova verso com porta diferente (ex.: 5433) e conectar ambos
pg_dumpall -p 5432 | psql -d template1 -p 5433

Você também pode gostar