Иллюстрированный самоучитель по PostgreSQL

Архивация и восстановление данных

Архивация и восстановление данных занимают важное место в работе любого администратора базы данных. Ни одна система не застрахована от сбоев жесткого диска, неосторожности пользователей или других потенциальных несчастий, приводящих к порче данных PostgreSQL.

В этом разделе описаны два общих способа архивации данных. В первом варианте приложение pg_dump, входящее в комплект поставки PostgreSQL, генерирует набор команд SQL для полной архивации базы данных. Второй вариант основан на архивации файловой системы сервера.

Приложение pg_dump

Приложение pg_dump запускается в режиме командной строки и строит серию команд SQL. Выполнение этих команд в указанном порядке позволяет полностью воссоздать базу данных.

Синтаксис приложения pg_dump:

pg_dump [ параметры ]база_данных

Параметр база_данных определяет имя базы данных, для которой генерируются команды SQL. Строка параметров имеет такой же формат, как у других утилит управления базами данных (например, createdb). В ней чаще всего передается ключ – f для определения файла, в котором сохраняются сгенерированные команды.

Примечание
Если флаг – f не указан, сгенерированные команды SQL вместо записи в файл выводятся в поток stdout
.

Ниже приведен полный список ключей приложения pg_dump.

  • – а, --data_only. Приложение генерирует только команды SQLCOPY и INSERT(B зависимости от того, установлен ли ключ – d). В результате архивируются только данные, хранящиеся в базе, но не объекты базы данных. Если ключ – а указывается без ключа – d, сгенерированные команды COPY копируют все данные из stdin (то есть записи буквально сохраняются в выходном файле). В противном случае записи представляются последовательными командами INSERT.
  • – b, --blobs. Большие двоичные объекты архивируются наряду с обычными данными. Также должен быть установлен ключ – F с форматом t или с. По умолчанию данные больших двоичных объектов не архивируются.
  • – с, --clean. Командам SQL, создающим объекты базы данных, должны предшествовать команды удаления этих объектов. Ключ обычно используется при повторной инициализации существующей базы данных (вместо ее удаления и создания на пустом месте).
  • – С, --create. В выходные данные включается команда SQL для создания базы данных (CREATE DATABASE).
  • – d, --inserts. Для записей генерируются команды INSERT вместо используемых по умолчанию команд COPY. Этот вариант безопаснее, так как одна поврежденная запись приводит к сбою всей команды COPY, но процесс восстановления занимает гораздо больше времени.
  • – D, --attribute_inserts. Ключ – D, как и – d, генерирует команды INSERT, но в каждую команду INSERT перед секцией VALUES включается список полей в круглых скобках.
  • – f файл, --file=файл. Результаты работы pg_dump направляются в заданный файл вместо потока stdout. Пользователь, запускающий pg_dump, должен иметь системные права записи в этот файл.
  • – F { с | t р }, --format { с | t | p }. Формат выходного файла (приложение pg_restore обычно используется для работы с файлами, созданными в форматах с или t – соответственно gzip или tar):
    • с (сжатие gzip) – файл .tar, сжатый утилитой gzip (то есть .tar.gz);
    • t – файл .tar;
    • р (простой текст) – выходной файл генерируется в простом текстовом формате (режим используется по умолчанию).
  • – h хост, --bost=xocт. Хост, с которым устанавливается связь вместо хоста local host. Используется в тех случаях, когда архивируемая база данных находится на другом сервере.
  • – i, --ignore-version. Запрет сравнения версии pg_dump с текущей версией PostgreSQL. Ключ следует использовать лишь в крайних случаях, поскольку различия в структуре системных каталогов разных версий с большой вероятностью приведут к возникновению ошибок. Обычно версия pg_dump должна соответствовать версии архивируемой базы данных.
  • – n, --no_quotes. Идентификаторы заключаются в кавычки только при наличии недопустимых символов (пробелов, символов верхнего регистра и т. д.).
  • – N, --quotes. Все идентификаторы обязательно заключаются в кавычки. Используется в pg_dump по умолчанию, начиная с PostgreSQL 6.4.
  • – о, --old. Вместе с данными записей архивируются OID (идентификаторы объектов). Ключ очень важен в приложениях, которые так или иначе осмысленно используют OID.
  • – 0, --no-owner. При создании архива не учитывается принадлежность базы данных. Объекты, созданные в результате восстановления данных, будут принадлежать пользователю, выполняющему эту операцию.
  • – р порт, --port=nopт. Порт, по которому должно производиться подключение к серверу, вместо порта по умолчанию (обычно 5432, хотя при компиляции PostgreSQL можно задать другой порт при помощи флага --with-pgport).
  • – R, --no-reconnect. Подавляет все команды \connect, которые обычно обеспечивают сохранение прав владельцев при восстановлении из архива. На практике ключ аналогичен ключу – 0, но он также исключает возможность использования ключа – С, поскольку после создания новой базы необходимо заново установить подключение.
  • – s, --schema-onlу. Генерируются только команды SQL для архивации таких объектов, как таблицы, последовательности, индексы и представления, а хранящиеся в таблицах данные игнорируются. Ключ может использоваться для копирования общей структуры базы данных с компьютера разработчика на компьютер, на котором база будет реально эксплуатироваться.
  • – t таблица. В заданной базе данных архивируется только заданная таблица.
  • – u, --password. Запрос имени пользователя и пароля. В PostgreSQL 7.1.x этот ключ был единственным средством указания другого имени пользователя. Если пароль не задан (NULL), то в ответ на запрос можно просто нажать клавишу Enter.
  • – v, --verbose. Вывод функций pg_dump направляется в поток stderr, а не, как обычно, в поток stdout!
  • – х, --no-acl. Подавление команд GRANT и REVOKE, обычно используемых для сохранения прав, действующих на момент архивации. Ключ используется в том случае, если при восстановлении базы данных из архива не нужно восстанавливать существовавшие ранее права или ограничения.
  • – Z, --compress {0-9 }. Уровень сжатия (0 – минимальный, 9 – максимальный) при использовании с ключом – F С.
Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.