
- •Работа с субд PostgreSql
- •Работа с субд PostgreSql
- •Введение
- •1Установка PostgreSql
- •2Создание новой бд
- •2.1Создание новой бд
- •2.2Создание новой таблицы
- •2.3Создание связей между таблицами
- •3Создание индексов
- •4Доступ к PostgreSql из Java
- •4.1Соединение с PostgreSql
- •4.2Взаимодействие с бд
- •5Создание представлений
- •6Хранимые процедуры и Триггеры
- •6.1Хранимые процедуры
- •6.1.1Оператор Create Function языка pl/pgSql
- •6.1.2Создание хранимых процедур в pgAdmin III
- •6.1.3Вызов хранимых процедур в Java
- •6.2Триггеры бд
- •6.2.1Синтаксис определения триггера в PostgreSql
- •6.2.2Создание триггера в PgAdmin III
- •7Права доступа
- •Создание ролей;
- •7.1Создание ролей
- •7.2Назначение прав доступа
- •7.3Отмена прав доступа
- •7.4Проверка прав доступа
- •8Резервное копирование и восстановление бд
- •8.1Резервное копирование (BackUp) бд
- •8.2Восстановление (Restore) бд
- •8.3Создание sql-дампа бд
- •8.4Восстановление sql-дампа бд
- •8.5Восстановление sql-дампа средствами pgAdmin III
- •9Особенности взаимодействия субд access и PostgreSql
- •9.1Подготовка соединения PostgreSql с бд в Access
- •9.2Копирование таблиц Access в таблицы PostgreSql
- •9.3Подключение таблиц PostgreSql к бд в Access
- •10Администрирование PostgreSql
- •Литература
8Резервное копирование и восстановление бд
8.1Резервное копирование (BackUp) бд
В состав PostgreSQL входит две утилиты резервного копирования. Это pg_dumpall выполняющая резервную копию всех БД (включая системную) и pg_dump, которая выполняет резервное копирование одной базы данных. Обе эти утилиты умеют сохранять копию БД как в текстовом так и в бинарном виде.
Рассмотрим процесс создания резервной копии средствами pgAdmin III. В pgAdmin III поддерживается возможность создавать резервную копию (BackUp) отдельной таблицы БД, схемы БД, всей БД или всего сервера БД.
Ниже приводится описание процесса создания резервной копии БД Деканат ВУЗа.
В окне Браузер объектов необходимо выбрать определенную БД, активизировать ее контекстное меню и в нем выбрать пункт Резервная копия (рисунок 7.1);
В открывшемся окне Backup База (рисунок 7.2) нужно указать имя и путь к файлу резервной копии, выбрать формат и дополнительные опции. Если опция ББО (Blobs) выбрана (задается по умолчанию), то в файл резервной копии БД будут сохранены объекты типа blobs;
После чего нажать кнопку ОК;
На закладке Сообщения окна Backup База будет выведен листинг процесса создания резервной копии БД (рисунок 7.3).
Для выполнения стандартного резервного копирования (дампа) и восстановления рекомендуется использовать варианты COMPRESS или TAR в стандартном режиме, предлагаемом системой по умолчанию. В этом случае файл дампа имеет расширение .backup.
Рисунок 7.1 – Контекстное меню объекта БД
Выбор опции Команды INSERT, используется для создания копии (дампа), которая может быть восстановлена в СУБД другого производителя. Файл дампа в этом случае имеет расширение .sql. Хотя, естественно, копия с таким расширением может быть восстановлена и PostgreSQL, но восстановление происходит значительно медленнее, чем в обычном режиме.
Рисунок 7.2 – Окно ввода параметров резервного копирования БД
Рисунок 7.3 – Закладка Сообщения окна Backup База
8.2Восстановление (Restore) бд
Ниже приведено описание способа восстановления БД в pgAdmin III.
Предварительное условие: Должна быть создана БД (имя не обязательно такое же, как и у сохраненной БД) и в этой БД обязательно должна быть создана схема (имя должно совпадать с именем схемы у сохраненной БД).
Выбрать в окне Браузер объектов новую БД, активизировать ее контекстное меню и в нем выбрать пункт Восстановить (рисунок 7.4);
Рисунок 7.4 – Контекстное меню объекта БД
В открывшемся окне Восстановление Базы (рисунок 7.5) следует указать файл, содержащий резервную копию БД;
После чего нажать кнопку ОК
Рисунок 7.5 – Окно ввода параметров восстановления БД
Если потребуется, то можно задать дополнительные опции восстановления.
В результате в окне Браузер объектов структура новой БД будет иметь следующий вид (рисунок 7.6):
Рисунок 7.6 – Структура восстановленной БД
8.3Создание sql-дампа бд
Идея создания SQL-дампа БД заключается в создании текстового файла с командами SQL, с помощью которых на сервере можно воссоздать БД в том состоянии, в котором она находилась перед созданием дампа.
Наличие SQL-дампа БД позволяет восстановить БД в реляционной СУБД любого производителя, что обеспечивает перенос БД между разными СУБД.
Примечание 1. В принципе pgAdmin III предусматривает создание SQL‑дампа, но на практике возникают некоторые ошибки при его восстановлении. С другой стороны менеджер PgMaestro хорошо выполняет работу по созданию и восстанавлению SQL‑дампа, который восстанавливается и pgAdmin III.
Исходя из замечаний, высказанных в Примечании 1, а так же с целью демонстрации возможностей по созданию/восстановлению 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-дампа для БД «Деканат ВУЗа» с помощью командной строки.
Запустить командную строку PostgreSQL (Пуск–>Программы–> PostgreSQL 8.3 (или 8.4) –>Командная строка). В результате будет получено окно, представленное на рисунке 7.7;
Написать в командной строке следующую строку, после чего нажать Enter (рисунок 7.8):
pg_dump –U postgres Deanery > d:\BackUpDb\DeaneryBkUp
Примечание: Как было написано выше, pg_dump по умолчанию будет устанавливать соединение с именем пользователя БД, соответствующим имени текущего пользователя операционной системы, который может не быть суперпользователем этой БД. Поэтому необходимо явно указывать суперпользователя с помощью опции –U.
Затем ввести пароль суперпользователя БД.
Рисунок 7.7 – Командная строка PostgreSQL
Рисунок 7.8 – Командная строка PostgreSQL