Создание дампа с помощью утилит pg_dump или pg_dumpall

С целью демонстрации возможностей по созданию/восстановлению SQL‑дампа по глобальным сетям при установлении жестких ограничений на доступ к серверам только через SSL‑порт (Secure Sockets Layer - Протокол защищенных сокетов) далее для создания SQL-дампа БД в PostgreSQL будет применена утилита pg_dump.

Утилита pg_dump представляет собой обычное клиентское приложение PostgreSQL. Пример ее использования может выглядеть следующим образом:

pg_dump dbname > outfile,гдеdbname – имя БД на сервере,outfile – имя нового файла, который будет содержать SQL-дамп БД.Примечание 2. В качестве outfile можно указывать полный путь к файлу. По умолчанию новый файл будет создан в папке \bin каталога, куда был установлен PostgreSQL (например, c:\Program Files\PostgreSQL\8.3\bin\).

pg_dump позволяет выполнять процедуру резервного копирования БД с любого удаленного компьютера, который имеет доступ к этой БД. Однако, следует помнить, что pg_dump не работает с особо настроенными правами. А именно, пользователь, который запускает эту утилиту, должен иметь права на чтение всех таблиц, для которых ему нужно создать резервные копии, поэтому, как правило, лучше всего запускать ее из-под суперпользователя БД.

Чтобы указать, к какому серверу следует обратиться pg_dump, в командной строке используются опции -h host и -p port. В качестве хоста по умолчанию используется локальный компьютер или то, что указано в переменной окружения PGHOST. Аналогично, порт по умолчанию определяется переменной окружения PGPORT или, если это не удалось, значением по умолчанию, указанным при компилировании.

Как и любое другое клиентское приложение PostgreSQL, pg_dump по умолчанию будет устанавливать соединение с именем пользователя БД, соответствующим имени текущего пользователя операционной системы. Это можно изменить с помощью опции -U или заданием переменной окружения PGUSER. Следует также помнить, что соединения pg_dump подчиняются обычным механизмам аутентификации клиентов.

Дамп, создаваемый с помощью pg_dump, обладают внутренней связностью, поскольку дамп представляет собой "снимок БД" в состоянии на момент запуска pg_dump. Во время своей работы pg_dump не блокирует выполнение других операций. (Исключения составляют операции, требующие полной блокировки, среди которых почти все виды ALTER TABLE).

Примечание 3.Если схема БД основывается на использовании OID (например, в качестве внешних ключей), необходимо дать pg_dump указания включить OID в дамп. Для этого используется опция командной строки -o. Более подробно об опциях pg_dump см. [11].

В качестве примера приведем описание процесса создания SQL-дампа для БД «Деканат ВУЗа» с помощью командной строки.

1. Запустить командную строку PostgreSQL (Пуск–>Программы–> PostgreSQL–>Командная строка). Или в Пуск–>Выполнить самостоятельно набрать команду или получить ее через Обзор

C:\Program Files\PostgreSQL\9.0\bin\pg_dump.exe

В результате будет получено окно, представленное на рисунке 9.12;

Рисунок 9.12 – Командная строка PostgreSQL

2. Написать в командной строке следующую строку, после чего нажать Enter (рисунок 9.13):

pg_dump –U postgres Deanery > d:\BackUpDb\DeaneryBkUp

Рисунок 9.13 – Командная строка PostgreSQL

Примечание: Как было написано выше, pg_dump по умолчанию будет устанавливать соединение с именем пользователя БД, соответствующим имени текущего пользователя операционной системы, который может не быть суперпользователем этой БД. Поэтому необходимо явно указывать суперпользователя с помощью опции –U.

3. Затем ввести пароль суперпользователя БД.