PostgreSQL Резервное копирование / Восстановление

Какой лучший способ сделать резервную копию базы данных postgresql?

Я пытался использовать документацию на www.postgresql.org, но всегда получаю ошибки целостности при восстановлении.

Прямо сейчас я использую это для резервного копирования:

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

для восстановления:

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

Но я не получаю желаемых результатов..

Редактировать: я должен отметить, что моя база данных имеет много внешних ключей..

Некоторые из ошибок, которые я вижу:

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...

1 ответ

Решение

Со страницы руководства pg_restore:

pg_restore - это утилита для восстановления базы данных PostgreSQL из архива, созданного pg_dump(1) в одном из форматов, не содержащих текст.

со страницы руководства pg_dump:

Дампы могут быть выведены в формате сценария или файла архива. Дампы сценариев - это текстовые файлы, содержащие команды SQL, необходимые для восстановления базы данных до состояния, в котором она находилась на момент сохранения. Чтобы восстановить из такого скрипта, передайте его в psql(1). Файлы сценариев могут использоваться для восстановления базы данных даже на других машинах и других архитектурах; с некоторыми изменениями даже на других продуктах баз данных SQL.

Альтернативные форматы архивных файлов должны использоваться с pg_restore(1) для перестройки базы данных. Они позволяют pg_restore быть избирательным в отношении того, что восстанавливается, или даже изменять порядок элементов перед восстановлением.

Вы не говорите, чтобы это дамп в не текстовом формате. Вы говорите, чтобы восстановить не простой текстовый формат. очевидно, это не сработает.

Со страницы руководства 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
Другие вопросы по тегам