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