Архивация и восстановление данных
По умолчанию приложение 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.