Восстановление базы данных PostgreSQL
Перед восстановлением базы данных необходимо разорвать все соединения с этой базой данных и подготовить файл резервной копии. В PostgreSQL вы можете восстановить базу данных двумя способами:
- Использование
psqlдля восстановления простого файла сценария SQL, созданного инструментамиpg_dumpиpg_dumpall. - Использование
pg_restoreдля восстановления файла tar и формата каталога, созданного инструментомpg_dump.
Как восстановить базы данных с помощью psql
Инструмент psqlпозволяет восстанавливать файл сценария SQL, созданный с помощью pg_dump, pg_dumpallили любых других инструментов, которые создают совместимые резервные копии файлов. С помощью этого psql инструмента вы можете выполнить весь сценарий в файле дампа.
Чтобы восстановить полную резервную копию и игнорировать любые ошибки, возникшие в процессе восстановления, используйте следующую команду:
psql -U username -f backupfile.sqlЕсли вы хотите остановить восстановление базы данных в случае ошибок, вы добавляете --set ON_ERROR_STOP=on option:
psql -U username --set ON_ERROR_STOP=on -f backupfileЕсли вы создаете резервные копии объектов в определенной базе данных, вы можете восстановить их с помощью следующей команды:
psql -U username -d database_name -f objects.sqlДелаем восстановление на удаленном сервере
C:\"Program Files"\PostgreSQL\14\bin\psql -h 10.10.11.18 -p 5432 -d BASE -U postgres -W -f D:\backup\postgres\BASE.sql
Как восстановить базы данных с помощью pg_restore
Помимо psqlинструмента, вы можете использовать pg_restoreпрограмму для восстановления баз данных, зарезервированных с помощью инструментов pg_dumpили pg_dumpall. С pg_restoreпрограммой у вас есть различные варианты восстановления баз данных, например:
- Позволяет
pg_restoreвыполнять параллельное восстановление, используя-jпараметр, указывающий количество потоков для восстановления. Каждый поток одновременно восстанавливает отдельную таблицу, что значительно ускоряет процесс. В настоящее времяpg_restoreподдерживается этот параметр только для пользовательского формата файла. - Также
pg_restoreпозволяет восстанавливать определенные объекты базы данных в файле резервной копии, содержащем полную базу данных. - Можно
pg_restoreвзять резервную копию базы данных в старой версии и восстановить ее в новой версии.
Давайте создадим новую базу данных с именем newdvdrentalдля практики с этим pg_restoreинструментом.
CREATE DATABASE newdvdrental;Вы можете восстановить dvdrentalбазу данных в tarформате файла, сгенерированном инструментом pg_dumpв руководстве по резервному копированию базы данных PostgreSQL , используя следующую команду:
pg_restore --dbname=newdvdrental --verbose c:\pgbackup\dvdrental.tarЕсли вы восстанавливаете базу данных, которая совпадает с той, для которой вы сделали резервную копию, вы можете использовать следующую команду:
pg_restore --dbname=dvdrental --create --verbose c:\pgbackup\dvdrental.tarНачиная с PostgreSQL 9.2, вы можете использовать --sectionопцию восстановления только структуры таблицы. Это позволяет использовать новую базу данных в качестве шаблона для создания других баз данных.
Сначала создайте новую базу данных с именем dvdrental_tpl.
CREATE DATABASE dvdrental_tpl;Во-вторых, восстановите структуру таблицы только из dvdrental.tarфайла резервной копии с помощью следующей команды:
pg_restore --dbname=dvdrental_tpl --section=pre-data c:\pgbackup\dvdrental.tar
Только полноправные пользователи могут оставлять комментарии. Аутентифицируйтесь пожалуйста, используя сервисы.