Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
методичка_работа_с_PostgreSQL.doc
Скачиваний:
28
Добавлен:
10.11.2019
Размер:
5.91 Mб
Скачать

8Резервное копирование и восстановление бд

8.1Резервное копирование (BackUp) бд

В состав PostgreSQL входит две утилиты резервного копирования. Это pg_dumpall выполняющая резервную копию всех БД (включая системную) и pg_dump, которая выполняет резервное копирование одной базы данных. Обе эти утилиты умеют сохранять копию БД как в текстовом так и в бинарном виде.

Рассмотрим процесс создания резервной копии средствами pgAdmin III. В pgAdmin III поддерживается возможность создавать резервную копию (BackUp) отдельной таблицы БД, схемы БД, всей БД или всего сервера БД.

Ниже приводится описание процесса создания резервной копии БД Деканат ВУЗа.

  1. В окне Браузер объектов необходимо выбрать определенную БД, активизировать ее контекстное меню и в нем выбрать пункт Резервная копия (рисунок 7.1);

  2. В открывшемся окне Backup База (рисунок 7.2) нужно указать имя и путь к файлу резервной копии, выбрать формат и дополнительные опции. Если опция ББО (Blobs) выбрана (задается по умолчанию), то в файл резервной копии БД будут сохранены объекты типа blobs;

  3. После чего нажать кнопку ОК;

  4. На закладке Сообщения окна Backup База будет выведен листинг процесса создания резервной копии БД (рисунок 7.3).

Для выполнения стандартного резервного копирования (дампа) и восстановления рекомендуется использовать варианты COMPRESS или TAR в стандартном режиме, предлагаемом системой по умолчанию. В этом случае файл дампа имеет расширение .backup.

Рисунок 7.1 – Контекстное меню объекта БД

Выбор опции Команды INSERT, используется для создания копии (дампа), которая может быть восстановлена в СУБД другого производителя. Файл дампа в этом случае имеет расширение .sql. Хотя, естественно, копия с таким расширением может быть восстановлена и PostgreSQL, но восстановление происходит значительно медленнее, чем в обычном режиме.

Рисунок 7.2 – Окно ввода параметров резервного копирования БД

Рисунок 7.3 – Закладка Сообщения окна Backup База

8.2Восстановление (Restore) бд

Ниже приведено описание способа восстановления БД в pgAdmin III.

Предварительное условие: Должна быть создана БД (имя не обязательно такое же, как и у сохраненной БД) и в этой БД обязательно должна быть создана схема (имя должно совпадать с именем схемы у сохраненной БД).

  1. Выбрать в окне Браузер объектов новую БД, активизировать ее контекстное меню и в нем выбрать пункт Восстановить (рисунок 7.4);

Рисунок 7.4 – Контекстное меню объекта БД

  1. В открывшемся окне Восстановление Базы (рисунок 7.5) следует указать файл, содержащий резервную копию БД;

  2. После чего нажать кнопку ОК

Рисунок 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-дампа для БД «Деканат ВУЗа» с помощью командной строки.

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

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

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

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

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

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

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