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

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

По умолчанию приложение pg_dump может запускаться любым системным пользователем, но пользователь, подключающийся к PostgreSQL, должен обладать правом выборки для всех объектов в архивируемой базе данных. В листинге 9.20 приведен пример использования программы pg_dump пользователем manager для базы данных booktown. Ключ – С включает в архив команду CREATE DATABASE. Эта команда включается не всегда, поскольку в некоторых случаях база данных создается заранее в нестандартной конфигурации.

Листинг 9.20. Использование приложения pg_dump.

[jworsley@booktown – ]$ pg_dump – u – C – f booktown.sql booktown
Username: manager Password:
[jworsley@booktown – ]$ Is – 1 booktown.sql
-rw-rw-r --1 jworsley jworsley 46542 Sep 13 16:42 booktown.sql

Приложение pg_dump поддерживает стандартные параметры хостовых соединений (ключи – h, – u и – р), что позволяет выполнять удаленную архивацию с любого хоста, которому разрешено удаленное подключение в соответствии с содержимым файла pgjiba.conf (более подробная информация приведена в главе 8).

В листинге 9.21 производится подключение с удаленного сервера к серверу booktown.commandprompt.com для создания архивного файла в формате gzip (ключ – F с) с именем booktown.sql.tar.gz.

Листинг 9.21. Удаленный запуск pg_dump.

[jworsley@cmd ~]$ pg_dump – u – h booktown.commandprompt.com \
-F с – f booktown.sql.tar.gz booktown
Username: manager
Password:
[jworsley@cmd – ]$ Is – 1 booktown.sql.tar.gz
-rw-rw-r-&th1nsp: – 1 jworsley jworsley 45909 Sep 13 17:12 booktown.sql.tar.gz

Если архивный файл должен содержать большие двоичные объекты, воспользуйтесь форматом tar (t) или gzip (с), потому что текстовый формат не дает такой возможности. В остальных случаях обычных текстовых архивов бывает вполне достаточно.

Архивы в формате tar нередко более чем в два раза превышают по объему свои текстовые прототипы, даже если они не содержат двоичных объектов. Дело в том, что в формат tar включается иерархическое оглавление файлов .dat. В этом оглавлении хранится информация, необходимая для распаковки формата tar соответствующей командой pg_restore; дополнительные инструкции занимают лишнее место на диске. Поскольку tar архивирует файлы без сжатия, был предусмотрен формат с, обеспечивающий автоматическое сжатие tar-файлов в формат gzip.

Приложение pg_dumpall

В PostgreSQL также существует приложение pg_dumpall, которое является своего рода "оболочкой" для вызова программы pg_dump. Основная функция этого приложения заключается в одновременной архивации всего кластера баз данных PostgreSQL в системе без вызова pg_dump для всех баз данных по очереди. Синтаксис команды pg_dumpaTl, выводимый с флагом --help:

pg_dumpall [ – с ] [ – h хост ] [ – р порт ] [ – д ]

Приложение pg_dumpall получает те же параметры подключения, что и приложение pg_dump. Ниже перечислены ключи pg_dumpall.

  • – с. Командам SQL, создающим глобальные объекты, должны предшествовать команды удаления этих объектов.
  • – h хост, --host=хост. Хост, с которым устанавливается связь вместо хоста local host или хоста, определяемого переменной среды PGHOST. Используется в тех случаях, когда архивируемая база данных находится на другом сервере.
  • – р порт, --port=пopт. Порт, по которому должно производиться подключение к серверу, вместо порта по умолчанию (обычно 5432).
  • – g, --globals-only. Архивируются только глобальные объекты. Обычно этот режим используется при воссоздании пользователей и групп, а также их дублирования на другом компьютере (архив переносится на другой компьютер и восстанавливается). При установке ключа – д перед выполнением команд CREATE из таблицы pg_shadow автоматически удаляются все пользователи. Будьте внимательны!

Внимание
Не выполняйте команду pg_dumpall с ключом – ? . Это приведет к тому, что ключ будет передан приложению pg_dump для каждой базы и выходные данные займут гораздо больше места, чем можно предположить. Для получения справки о команде pg_dumpall используется ключ --help
.

Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.