Backup / Restauração do PostgreSQL

1

Qual é a melhor maneira de fazer backup de um banco de dados postgresql?

Eu tentei usar a documentação em www.postgresql.org, mas sempre recebo erros de integridade ao restaurar.

Agora estou usando isso para backup:

pg_dump -U myuser -d mydatabase db.pg.dump

para restauração:

pg_restore -c -r -U myuser -d mydatabase db.pg.dump

Mas não estou conseguindo os resultados desejados.

Editar: devo observar, meu banco de dados tem muitas chaves estrangeiras ..

Alguns dos erros que vejo são:

ERROR:  current transaction is aborted, commands ignored until end of transaction block

ERROR:  zero-length delimited identifier at or near """"
LINE 1: ..._text_id_fkey" FOREIGN KEY ("text_id") REFERENCES ""."wiki_t...
    
por Ian 24.04.2010 / 20:41

1 resposta

2

da página do manual pg_restore:

pg_restore is a utility for restoring a PostgreSQL database from an archive created by pg_dump(1) in one of the non-plain-text formats.

da página do manual pg_dump:

Dumps can be output in script or archive file formats. Script dumps are plain-text files containing the SQL commands required to reconstruct the database to the state it was in at the time it was saved. To restore from such a script, feed it to psql(1). Script files can be used to reconstruct the database even on other machines and other architectures; with some modifications even on other SQL database products.

The alternative archive file formats must be used with pg_restore(1) to rebuild the database. They allow pg_restore to be selective about what is restored, or even to reorder the items prior to being restored.

Você não está dizendo para despejar em um formato que não seja de texto simples. Você está dizendo para restaurar um formato de texto não-simples. obviamente isso não vai funcionar.

Na página do manual pg_dump:

EXAMPLES
   To dump a database called mydb into a SQL-script file:

   $ pg_dump mydb > db.sql

   To reload such a script into a (freshly created) database named newdb:

   $ psql -d newdb -f db.sql

   To dump a database into a custom-format archive file:

   $ pg_dump -Fc mydb > db.dump

   To reload an archive file into a (freshly created) database named newdb:

   $ pg_restore -d newdb db.dump
    
por 25.04.2010 / 00:42