Как предотвратить запись базы данных postgres во время выполнения pg_restore?

Я выполняю восстановление базы данных с помощью pg_restore, который дает сбой, когда запись в базу данных происходит во время восстановления. Ошибка возникает из-за последовательности первичного ключа, используемой новой вставкой в ​​таблицу, которая уже есть в файле резервной копии.

pg_restore: [archiver (db)] COPY не удалось выполнить для таблицы "test": ОШИБКА: повторяющееся значение ключа нарушает уникальное ограничение "test_pkey"

Есть ли способ предотвратить запись в базу данных при запуске pg_restore?

Спасибо, Ананд


person anandloni    schedule 08.10.2018    source источник
comment
Я думаю, вам не следует восстанавливать данные базы данных в работающий кластер базы данных.   -  person Dilyan Trayanov    schedule 08.10.2018
comment
Да, я восстанавливаю в новой базе данных. Но к моменту завершения восстановления в базу данных добавляется запись аудита, что приводит к сбою восстановления.   -  person anandloni    schedule 09.10.2018
comment
Смотрите мой ответ ниже   -  person Dilyan Trayanov    schedule 09.10.2018
comment
Я могу решить эту проблему, восстановив базу данных с другим именем, и после завершения восстановления переименовать базу данных в фактическое имя.   -  person anandloni    schedule 14.11.2018


Ответы (1)


Если вы хотите, вы можете восстановить данные следующим образом:

  1. Возьмите последний номер auto inc из источника данных.
  2. Установите следующее значение для таблицы как текущее число + 1
  3. Восстановите вашу базу данных
person Dilyan Trayanov    schedule 08.10.2018
comment
Я не уверен, как извлечь последовательности из дампа. Может быть, я могу иметь все последовательности в отдельном файле. Есть ли способ сбросить все последовательности в отдельный файл с помощью pg_dump? - person anandloni; 10.10.2018