Я пытаюсь восстановить резервную копию postgres из системы, которая больше не предоставляется, и я получаю ряд ошибок, в зависимости от того, что я пытаюсь.
- У меня есть толькорезервные копии, нет исходных серверов, на которые можно сослаться
- Я успешно восстанавливал из этих производственных резервных копий в прошлом, но со времени последнего успеха я перепутал с моей локальной средой (например, переустановил postgres через Homebrew)
- Я полагаю, что бывший коллега (более недоступный) успешно восстановил эту конкретную резервную копию
- Я столкнулся с той же ошибкой, когда:
- при попытке резервного копирования с использованием postgresql@9.4
- пробуя предыдущую известную версию базы данных (используя postgres 11)
(я прочитал связанные / предложенные вопросы, но они не кажутся актуальными)
Резервная копия была создана с помощью следующей команды (в сценарии bash):
pg_dump --schema=public -Fc
И команда, использованная для восстановления сценария (которая отображается в виде справки в виде текста назадup script):
dropdb ${PGDATABASE}
createdb ${PGDATABASE}
time pg_restore \
-j4 \
-d ${PGDATABASE} \
--create \
--no-privileges \
--no-owner \
--clean \
--if-exists \
--exit-on-error \
"${dirname}/${filename}"
Когда я запускаю команду восстановления локально, я получаю следующее:
time pg_restore -j4 -d ${PGDATABASE} --create --no-privileges --no-owner --clean --if-exists --exit-on-error ../backups/backup__2019-09-03_16-00-19.pg_dump
pg_restore: [archiver (db)] Error while PROCESSING TOC:
pg_restore: [archiver (db)] Error from TOC entry 4954; 1262 962277 DATABASE mydb mydb
pg_restore: [archiver (db)] could not execute query: ERROR: cannot drop the currently open database
Command was: DROP DATABASE IF EXISTS mydb;
real 0m0.049s
user 0m0.019s
sys 0m0.012s
Раньше у меня только когда-либо возникали ошибки из-за дискового пространства'после нескольких минут работы, но, как вы можете видеть из вывода time
, эта ошибка возникает практически сразу!
Резервная копия создается со сжатием -Fc
, и я могу распаковатьрезервное копирование в открытый текст с использованием pg_restore backup.pg_dump > backup.sql
, но я не могу найти там никаких команд, связанных с DROP DATABASE
: /
-- Dumped from database version 9.6.11
-- Dumped by pg_dump version 11.3 (Ubuntu 11.3-1.pgdg14.04+1)
Я вижу, что БД изначально была выгружена из 9.6.11
, но я 'Я вполне уверен, что ранее я успешно восстановился с PG 10 ...
Я пробовал разные вещи, такие как:
time pg_restore -d ${PGDATABASE} --no-privileges --no-owner --exit-on-error ../backups/backup__2019-09-03_16-00-19.pg_dump
pg_restore: [archiver (db)] Error while PROCESSING TOC:
pg_restore: [archiver (db)] Error from TOC entry 7; 2615 1033373 SCHEMA public mydb
pg_restore: [archiver (db)] could not execute query: ERROR: schema "public" already exists
Command was: CREATE SCHEMA public;
ptim:dropdb mydb; createdb mydb
ptim:gizmag ptim$ dropdb mydb
ptim:gizmag ptim$ time pg_restore -d ${PGDATABASE} --create --no-privileges --no-owner --exit-on-error ../backups/backup__2019-09-03_16-00-19.pg_dump
pg_restore: [archiver (db)] connection to database "mydb" failed: FATAL: database "mydb" does not exist
# guess I misunderstood the create flag!
ptim:gizmag ptim$ dropdb mydb; createdb mydb
dropdb: database removal failed: ERROR: database "mydb" does not exist
ptim:gizmag ptim$ time pg_restore -d ${PGDATABASE} --create --no-privileges --no-owner --exit-on-error ../backups/backup__2019-09-03_16-00-19.pg_dump
pg_restore: [archiver (db)] Error while PROCESSING TOC:
pg_restore: [archiver (db)] Error from TOC entry 4954; 1262 962277 DATABASE mydb mydb
pg_restore: [archiver (db)] could not execute query: ERROR: database "mydb" already exists
Command was: CREATE DATABASE mydb WITH TEMPLATE = template0 ENCODING = 'UTF8' LC_COLLATE = 'en_US.UTF-8' LC_CTYPE = 'en_US.UTF-8';
Я также безуспешно пытался восстановить данные из дампа открытого текста:
psql -U ptim -d mydb -1 -f ../backups/backup__2019-09-03_16-00-19.sql
SET
SET
SET
SET
SET
set_config
------------
(1 row)
SET
SET
SET
SET
psql:../backups/backup__2019-09-03_16-00-19.sql:23: ERROR: schema "public" already exists
psql:../backups/backup__2019-09-03_16-00-19.sql:26: ERROR: current transaction is aborted, commands ignored until end of transaction block
# snip... repeated, and varied errors follow
Есть предложения?!