Использование pg_restore при восстановлении
Использование 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 (то есть на экран).
При использовании ключа создания базы данных -С все равно необходимо за-1ть ключ -d с именем существующей базы данных для подключения — например, яр! atel. Неважно, к какой базе данных вы при этом подключаетесь, это всего лишь эеменное подключение до момента создания новой базы данных.
Многие ключи pg_restore совпадают с аналогичными ключами команды pg_dump. Иногда для достижения желаемой цели один ключ должен передаваться при вызове как pg_dump, так и pg_restore. Например, это относится к ключу -С. Если ключ передается только при вызове pg_dump, то команда CREATE DATABASE будет проигнорирована при восстановлении, несмотря не ее присутствие в архиве.
Ниже приведены более подробные описания всех ключей.
- -а, - -data_only. Все ссылки на структурные объекты базы данных игнорируются, и восстанавливаются только записи данных (команды COPY и INSERT).
- -с, - -clean. Командам SQL, создающим объекты базы данных, должны предшествовать команды удаления этих объектов. Без ключа -с эти команды игнорируются, даже если они присутствуют в файле архива.
- -С, --create. В процессе восстановления выполняется команда создания базы данных (CREATE DATABASE), если она присутствует в архиве. Без ключа -С команда игнорируется.
- -d база_данных, —<ЛЬпате=база_данныл:. Имя базы данных, к которой следует подключиться перед восстановлением. Если в процессе архивации использовался ключ создания новой базы данных -С, то ключ -d должен ссылаться на базу tempi atel. Если параметр не указан, команды восстановления базы данных не передаются PostgreSQL, а выводятся в поток stderr.
- -f файл, - -Т'\~\е=файл. Команды SQL, обеспечивающие восстановление базы данных, направляются в заданный файл, вместо передачи postmaster (ключ -d) или вывода в stdout (используется по умолчанию).
- -F { с | t },--format { с | t }. Формат входного файла. Значение с означает файл tar, сжатый утилитой gzip (то есть .tar.gz), а значение t соответствует простому файлу .tar. Обычно этот ключ не нужен, поскольку pg_restore автоматически определяет тип файла по данным заголовка.
- -h хост, --host=.roc?n. Хост, с которым устанавливается связь вместо хоста
- localhost.
- -1, - - i ndex. Восстанавливаются только индексы. Вследствие ошибки PostgreSQL ключ -i может не работать, но ключ --Index в версии PostgreSQL 7.1.x работает всегда.
- -1, -1 i st. Приложение pg_restore выводит перечень объектов базы данных, разделенных запятыми. Вывод можно направить в файл при помощи ключа - f или средств командного интерпретатора (>) и позднее использовать с ключом -L для выбора восстанавливаемых объектов базы данных.
- -L файл, - -use-11 $1=файл. Перечень объектов, восстанавливаемых приложением pg_restore, берется из заданного файла. Файл создается с ключом -1. После создания файла удалите строки объектов, которые не нужно восстанавливать, или закомментируйте их, поставив в начало этих строк точку с запятой (;).
- -N, --orig-order. Восстановление производится в порядке первоначальной архивации объектов приложением pg_dump (дополнительная информация берется из файла в формате tar или gzip). Этот порядок не совпадает с порядком следования команд в файле архива, который определяет последовательность восстановления по умолчанию. Ключ не может использоваться вместе с ключом -о или - г. Если в процессе восстановления объекты базы данных будут воссозданы в неправильном порядке (например, объект, который зависит от другого существующего объекта, будет создан раньше него), можно заново инициализировать базу данных и попробовать восстановить ее с ключом -N.
- -о, -old-order. Объекты восстанавливаются строго в порядке возрастания OID. Ключ не может использоваться вместе с ключом -N или -г.
- -0, --no-owner. Приложение pg_restore игнорирует команды \connect, обеспечивающие сохранение принадлежности объектов.
- -р порт, --port=nopm. Порт, по которому должно производиться подключение к серверу, вместо порта по умолчанию (обычно 5432, хотя при компиляции PostgreSQL можно задать другой порт при помощи флага - -with-pgport).
- -Р, --function. Восстанавливаются только функции. По аналогии с ключом -i, из-за ошибки PostgreSQL ключ -Р может не работать, но ключ - -function в версии PostgreSQL 7.1.x работает всегда.
- - г, - - rearrange. Восстановление происходит в порядке, выбранном приложением pg_dump в процессе создания архива. При установке ключа большинство объектов создается в соответствии с порядком OID, хотя команды создания правил и индексов перемещаются в конец файла. Ключ используется по умолчанию.
- -R, - -no- reconnect. Приложение pg_restore игнорирует все команды \connect (а не только те, которые обеспечивают сохранение принадлежности объектов). Не может использоваться с ключом -С, требующим повторного подключения после создания новой базы.
- -s, --schema-only. Восстанавливаются только структурные объекты базы данных — таблицы, последовательности, индексы и представления. Записи данных не копируются и не вставляются в таблицы, а последовательности инициализируются значениями по умолчанию. Этот ключ может использоваться, например, для создания пустой базы данных, предназначенной для реальной эксплуатации и повторяющей структуру базы данных, применявшейся в процессе разработки.
- -S имя, --superuser=UMM. Задает имя суперпользователя, которому предоставляется право отключения триггеров и изменения принадлежности объектов базы данных.
- -t таблица, --[=таблица~\. Восстанавливается только таблица с заданным именем (вместо всех объектов базы данных). Если ключ - -table указан без значения, восстанавливаются все таблицы.
- -Т триггер, --trigger[триггер]. Восстанавливается только триггер с заданным именем (вместо всех объектов базы данных). Если ключ --trigger указан без значения, восстанавливаются все триггеры.
- -и, - - password. Приложение pg_restore запрашивает имя пользователя и пароль.
- -v, - - verbose. Все выполняемые действия сопровождаются выводом сообщений, которые направляются в поток stderr, а не как обычно в поток stdout!
- -х, - -no-acl. Подавление команд GRANT и REVOKE в восстанавливаемом архиве.
В листинге 9.24 база данных booktown восстанавливается из архива, созданного на другом компьютере. Для восстановления используется файл booktown. sql. tar, созданный в листинге 9.21 (см. подраздел «Приложение pg_dump»).