postgresql|database|Ошибка при восстановлении резервной копии: pg_restore: подразумеваемое решение для восстановления только данных

один,

Обзор

Некоторое время при использовании файлов резервных копий, логически скопированных с помощью команды pg_dump, для восстановления нескольких указанных таблиц сообщалось об ошибкеpg_restore: подразумеваемое восстановление только данных  

Конечно, Baidu — это первое место, куда следует обратиться при возникновении проблемы, но, похоже, четкого решения нет.Конкретная команда ошибки и сообщение об ошибке следующие:

[postgres@node1 ~]$ pg_restore -Upostgres -v -x  -d   pgbench -t ds.dr_route_ds -t ds.dr_task_active_ds 2023-08-02T04_00-ds.dump 
pg_restore: connecting to database for restore
pg_restore: implied data-only restore

Вторая строка указывает, что команда pg_restore правильно подключена к базе данных с именем pgbench и готова к запуску резервного копирования.

В третьей строке указано, что команда восстановления только восстанавливает данные, и больше ничего! ! ! !

что фа?

два,

Анализ проблем и решения

Внимательно просмотрите эту команду резервного копирования и обнаружите, что это -d имя базы данных -t имя схемы.имя таблицы в этом режиме -t имя схемы.имя таблицы в этом режиме -t имя схемы.имя таблицы в этом режиме.

ОК, удалите имя режима и обнаружите, что его можно восстановить обычным способом.

postgres@node1 ~]$ pg_restore -Upostgres -v -x -a  -d   pgbench -t dr_route_ds -t dr_task_active_ds 2023-08-02T04_00-ds.dump 
pg_restore: connecting to database for restore
pg_restore: processing data for table "dr.dr_route_ds"
pg_restore: processing data for table "dr.dr_task_active_ds"
pg_restore: processing data for table "ds.dr_route_ds"
pg_restore: processing data for table "ds.dr_task_active_ds"

Но есть проблема.Под базой данных pgbench есть две схемы,то есть два режима.В двух режимах одни и те же две таблицы.Теперь я просто хочу восстановить данные этих двух таблиц в режиме ds,и не могу не хочу его восстанавливать.данные этих двух таблиц в режиме dr

Поэтому последняя команда восстановления — добавить параметр -n и указать режим ds:

[postgres@node1 ~]$ pg_restore -Upostgres -v -x -a  -d   pgbench -n ds -t dr_route_ds -t dr_task_active_ds 2023-08-02T04_00-ds.dump 
pg_restore: connecting to database for restore
pg_restore: processing data for table "ds.dr_route_ds"
pg_restore: processing data for table "ds.dr_task_active_ds"

####Примечание:

  • Параметр -v предназначен для отображения процесса восстановления.Обычно этот параметр является обязательным.
  • Параметр -a только перезаписывает восстановленные данные, не проверяя, существует ли объект.Например, если восстанавливаемая таблица уже существует, это не проверяет, а только перезаписывает данные таблицы в таблицу.
  • Параметр -x Если в логическом файле резервной копии есть объекты, содержащие разрешения, например пользователи, при использовании этого параметра соответствующие операции выполняться не будут.Например, в этом логическом файле резервной копии создается пользователь, но он не выполняется. Не буду проверять
  • Параметр -d указывает, в какую базу данных выполнять восстановление, то есть в целевую базу данных.
  • Параметр -n указывает схему в целевой базе данных, которая является именем схемы.
  • Параметр -t указывает имя восстанавливаемой таблицы.
  • Наконец, не добавляйте никаких параметров перед логическим файлом резервной копии.

Guess you like

Origin blog.csdn.net/alwaysbefine/article/details/133780363