Восстановление базы данных 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
Только полноправные пользователи могут оставлять комментарии. Аутентифицируйтесь пожалуйста, используя сервисы.