Лабораторная работа_5_резервное копирование

Восстановить только схему (определения данных), не данные (содержимое таблиц). Текущая последовательность значений не будет восстановлена. (Не путайте это с опцией —schema, в которой используется слово «schema» в другом значении).

-S username—superuser=username

Задает имя суперпользователя для использования при отключении триггеров. Это имеет смысл только если используется —disable-triggers.

-t table—table=table

Восстанавливать только определения и\или данные указанной таблицы. Это может быть комбинировано с опцией -n для указания схемы.

-T trigger—trigger=trigger

Восстановить только указанный триггер.

-v—verbose

Установить подробный режим.

-V—version

Вывести версию pg_restore и завершить работу.

-x—no-privileges—no-acl

Не сохранять права доступа (команды grant/revoke).

-1—single-transaction

Выполнить восстановление как отдельную транзакцию (то есть заключить внутрь команд BEGIN/COMMIT). Это дает гарантию, что либо все полностью команды выполняться успешно, либо никакие изменения не будут применены. Эта опция подразумевает —exit-on-error.

—disable-triggers

Эта опция имеет смысл лишь в случае восстановления только данных. Это заставляет pg_restore выполнять команды для временного отключения триггеров на целевых таблицах данные не будут загружены. Используете это, если есть проверки ссылочной целостности или другие триггеры на таблицы, которые вы не хотите вызывать во время загрузки данных.

В настоящее время выдаваемые команды для —disable-triggers должны быть выполнены от суперпользователя. Таким образом вы также должны задавать имя суперпользователя с -S или выполнять pg_restore, как суперпользователь PostgreSQL, что предпочтительнее.

—no-data-for-failed-tables

По умолчанию табличные данные восстанавливаются даже если команда создания таблицы завершилась неудачей (например, потому что она уже существует). С этой опцией данные для таких таблиц пропускаются. Это поведение полезно если целевая база данных уже содержит желаемое содержимое таблицы. Например, вспомогательные таблицы для расширений PostgreSQL, такие как PostGIS, уже могут быть загружены в целевую базу данных; установка этой опции предотвратит загрузку в них дублирующихся или устаревших данных.

Эта опция действует только при восстановлении непосредственно в базу данных, а не производящим SQL-скриптом выводом.

—no-security-labels

Не выводить команды восстановления меток безопасности даже если архив их содержит.

—no-tablespaces

Не выводить команды для выбора пространства таблиц. С помощью этой опции все объекты будут созданы в том пространстве таблиц, которое используется по умолчанию во время восстановления.

—use-set-session-authorization

Выдавать команду SQL-стандарта SET SESSION AUTHORIZATION вместо команды ALTER OWNER для определения принадлежности объектов. Это делает дамп более совместимым со стандартами, но в зависимости от истории объектов в дампе может не правильно восстановить.

-?—help

Показать справку по аргументам командной строки pg_restore и выйти.

pg_restore также принимает следующие опции командной строки управления параметрами подключения:

-h host—host=host

Задает сетевое имя машины на которой работает сервер. Если значение начинается с косой черты, оно используется в качестве указателя для Unix-сокета. По умолчанию берется из переменной окружения PGHOST, если она установлена, иначе попытается подключиться к Unix-сокету.

-p port—port=port

Задает TCP-порт или локальный файл с расширением UNIX-сокета на котором сервер прослушивает подключения. По умолчанию используется переменная окружения PGPORT, если установлена, или значение заданное по умолчанию при компиляции.

-U username—username=username

Имя пользователя от которого происходит подключение.

-w—no-password

Никогда не выдавать приглашения ввести пароль. Если сервер требует аутентификации с помощью пароля и пароль не доступен другим способом, таким как файл .pgpass, то попытка подключения завершиться неудачей. Эта опция может быть полезна в ряде задач и скриптов, где от пользователя не требуется ввод пароля.

-W—password

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

Эта опция всегда несущественна, так как pg_restore будет автоматически выдавать запрос пароля если сервер требует аутентификации по паролю. Однако pg_restore будет делать излишнюю попытку подключения при обнаружении запроса сервером пароля. В некоторых случаях имеет смысл вводить -W чтобы избежать дополнительной попытки подключения.

—role=rolenam

Определяет какое имя роли использовать для выполнения восстановления. Эта опция заставляет pg_restore выдавать команду SET ROLE rolename после подключения к базе данных. Это полезно, когда аутентифицированный пользователь (задается опцией -U) не хватает привилегий необходимых pg_restore, но можно сменить на роль с требуемыми правами. Некоторые инсталляции имеют политику против входа в систему непосредственно в качестве суперпользователя и использование этой опции позволяет восстанавливать без нарушения политики.

Окружение

PGHOSTPGOPTIONSPGPORTPGUSER

Параметры подключения по умолчанию.Эта утилита, как и большинство утилит PostgreSQL, также использует переменные окружения поддерживаемые libpq.

Диагностика

При прямом подключении к базе данных, которое задается с помощью опции -d, pg_restore внутренне выполняет SQL-заявления. Если наблюдаются проблемы с работой pg_restore, следует убедиться возможна ли выборка с базы данных, например, используя psql. Кроме того любые настройки соединения по умолчанию и переменные окружения, использующие интерфейсные библиотеки, будут применяться.

Примечания

Если ваша инсталляция имеет любые локальные дополнения в базе данных template1, будьте осторожны при загрузке вывода pg_restore в действительно пустую базу данных; иначе вероятно вы получите ошибки из-за дублирования определений добавленных объектов. Чтобы создать пустую базу данных без каких-либо локальных дополнений копируйте из template0, а не template1, например:CREATE DATABASE foo WITH TEMPLATE template0;

Ограничения pg_restore приведены ниже- Когда восстанавливаются данные для уже существующей таблицы и используется опция —disable-triggers, то pg_restore выдает команды для отключения триггеров на пользовательские таблицы перед вставкой данных, затем выдает команды для их обратного включения после того как данные были вставлены. Если восстановление было остановлено посредине, то системные каталоги могут прийти в неправильное состояние.- pg_restore не может выборочно восстанавливать большие объекты; например, только те, которые для определенной таблицы. Если архив содержит больше объекты, тогда все большие объекты будут восстановлены, либо ни один из них, если они исключены через -L, -t или другие опции.

Смотрите также документацию pg_dump для деталей относительно ограничений pg_dump. После восстановления имеет смысл выполнить ANALYZE на каждой восстановленной таблице, чтобы оптимизатор имел полезную статистику.

Примеры

Предположим, что мы сбросили базу данных под названием mydb в дамп-файл в пользовательском формате:

$ pg_dump -Fc mydb > db.dump

Чтобы удалить базу данных и восстановить ее с дампа:

$ dropdb mydb$ pg_restore -C -d postgres db.dump

База данных с именем возле -d может быть любая существующая в кластере база данных; pg_restore использует ее только чтобы выполнить команду CREATE DATABASE для mydb. С опцией -C данные всегда восстанавливаются в базу данных с именем указанным в дамп-файле.

Чтобы загрузить дамп в новую базу данных под названием newdb:

$ createdb -T template0 newdb$ pg_restore -d newdb db.dump

Следует заметить, что мы не используем -C, а вместо этого происходит непосредственное подключение к базе данных для восстановления. Также обратите внимание, что мы клонируем новую базу данных из template0, а не template1, чтобы гарантировано она была изначально пуста.

Чтобы изменить порядок элементов базы данных, сначала необходимо для этого сбросить в файл оглавление содержимого архива:

$ pg_restore -l db.dump > db.list

Файл листинга состоит из заголовка и одной линии для каждого элемента, например:

;; Archive created at Mon Sep 14 13:55:39 2009; dbname: DBDEMOS; TOC Entries: 81; Compression: 9; Dump Version: 1.10-0; Format: CUSTOM; Integer: 4 bytes; Offset: 8 bytes; Dumped from database version: 8.3.5; Dumped by pg_dump version: 8.3.8;;; Selected TOC Entries:;3; 2615 2200 SCHEMA — public pasha1861; 0 0 COMMENT — SCHEMA public pasha1862; 0 0 ACL — public pasha317; 1247 17715 TYPE public composite pasha319; 1247 25899 DOMAIN public domain0 pasha

Точка с запятой служат началом комментария, а числа в начале линий относятся к внутренним ID архива, присвоенных каждому пункту.

Строки в файле могут быть закомментированы, удалены или размещены в другом порядке. Например:

10; 145433 TABLE map_resolutions postgres;2; 145344 TABLE species postgres;4; 145359 TABLE nt_header postgres6; 145402 TABLE species_records postgres;8; 145416 TABLE ss_old postgres

могут быть использованы как входные данные для pg_restore и будут восстановлены только пункты 10 и 6 в данном порядке:

$ pg_restore -L db.list db.dump



Страницы: 1 | 2 | Весь текст