Какой лучший способ сделать резервную копию базы данных 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...
со страницы руководства 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