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
0 comments ↓
There are no comments yet...Kick things off by filling out the form below.
Leave a Comment