Восстановление базы данных
Существует два способа восстановления базы данных из архива. Если архив представляет собой простой текстовый файл, его можно передать psql в качестве вход ного файла. Если же был выбран другой формат архива (.tar или.tar.gz), следует использовать приложение pg_restore.
При восстановлении данные либо заносятся в пустую базу данных, либо баз данных специально создается. Выбор зависит в основном от способа архивации (то есть от того, содержит ли архив только данные или же в него были включен! команды создания базы данных).
Использование psql при восстановлении простых текстовых архивов
Простой текстовый файл, созданный приложением pg_dump, можно передать psc в качестве входного файла. При этом будут последовательно выполнены все инструкции SQL, хранящиеся в архиве. В зависимости от режима архивации существует несколько вариантов вызова psql.
Если архив создавался с ключом – С, команда SQL для создания базы данных присутствует в файле архива. Это означает, что база данных скорее всего либо была удалена, либо еще не создана в той системе, в которой она восстанавливается. Если база данных уже существует, возможно, ее придется удалить – но только в том случае, если вы твердо убеждены в актуальности данных архива.
С другой стороны, если ключ – С не использовался, придется создать базу данных перед подключением и восстановлением ее атрибутов и данных. Помните, что клиенту psql также необходимо передать параметры для подключения в качестве пользователя с правами создания базы данных.
В листинге 9.23 продемонстрировано восстановление базы данных booktown is файла booktown.sql, созданного в листинге 9.20 (см. подраздел "Приложение ig_dump"). Поскольку в этом примере использовался флаг – С, заранее создавать базу данных не нужно; достаточно подключиться к базе данных templatel.
Листинг 9.23. Восстановление базы данных.
booktown jworsley@booktown – ]$ psql – U manager – f booktown.sql templatel REATE DATABASE You are now connected to database booktown as user postgres. 3MMENT REATE REATE HANGE […]
По мере выполнения команд файла booktown.sql в stderr выводятся сообщения ервера (CREATE, CHANGE и т. д.).
Примечание
Благодаря возможности удаленного вызова psql восстановление может проводиться по сети. Для гого на авторизованном хосте должны быть указаны правильные параметры подключения.
Использование pg_restore при восстановлении архивов в форматах .tar и .tar.gz
Если файл был создан программой pg_dump в формате, отличном от простого текста, его можно восстановить из архива .tar или .tar.gz при помощи утилиты pg__restore.
Синтаксис команды pg_restore:
pg_restore [ параметры ] [ файл ]
Если файл не задан, pg_restore ожидает поступления данных из потока stdin, следовательно, при вызове pg_restore могут использоваться средства перенаправления ввода (<). Среди параметров особого внимания заслуживает ключ – d. Если ч не задан, pg_restore вместо восстановления базы данных просто выводит ко-аиды в поток stdout (то есть на экран).
При использовании ключа создания базы данных – С все равно необходимо задать ключ – d с именем существующей базы данных для подключения. Неважно, к какой базе данных вы при этом подключаетесь, это всего лишь временное подключение до момента создания новой базы данных.