|В главе 8 "Восстановление базы данных" добавлен и обновлен следующий |раздел по использованию функции приостановленного ввода-вывода:
|С DB2 поставляется новый инструмент db2inidb, позволяющий выполнить |восстановление после сбоев и перевести базу данных в состояние отложенного |повтора транзакций.
|Приостановленный ввод-вывод поддерживает постоянную доступность системы, |полностью реализуя оперативное отделение зеркальной копии, то есть отделение |зеркальной копии без закрытия базы данных. Если пользователь не может |получить автономные или оперативные резервные копии большой базы данных, |резервные копии или копии системы можно получить из ее зеркальной копии, |выполнив приостановку ввода-вывода и отделение зеркальной копии.
|Приостановка ввода-вывода запрещает запись данных на диск, гарантируя |согласованность образа отделенной зеркальной копии базы данных. При |этом будут нормально работать все операции базы данных, кроме операций |оперативного резервного копирования и восстановления. Однако некоторые |операции могут зависать при попытке сохранить на диск измененные страницы из |пула буферов и записать буферы журналов в журналы. Эти операции |продолжат нормальную работу после возобновления ввода-вывода для базы |данных. Важно, чтобы ввод-вывод базы данных был возобновлен из того же |соединения, в котором он был ранее приостановлен. В противном случае |последующая попытка соединения может зависнуть, если для нее потребуется |записи на диск измененных страниц из пула буферов.
|При создании зеркальной копии базы данных прежде всего копируется все |содержимое каталога базы данных. Необходимо также скопировать каталог |журналов и все контейнеры табличных пространств, расположенные вне каталога |базы данных. Поскольку отделенная зеркальная копия базы данных зависит |от путей этих каталогов, пути, в которые копируются эти каталоги, должны быть |такими же, как на исходной системе. Это означает, что экземпляр также |должен быть тем же. Из-за этой зависимости нельзя создать зеркальную |копию базы данных в той же системе, где находится исходная база данных, не |задав для db2inidb новую опцию "relocate".
|Назначение опции "relocate" - изменить положение базы данных на |определенной системе, используя указанный файл конфигурации. При этом |можно изменить внутренний каталог базы данных, имена каталогов контейнеров, |каталог журналов, имя экземпляра и имя базы данных. Если для каталога |базы данных, каталогов контейнеров и каталога журналов были успешно созданы |зеркальные копии в других каталогах на той же системе, что и исходная база |данных, можно использовать утилиту db2inidb с опцией "relocate", чтобы |изменить внутренние пути зеркальной копии базы данных. Сценарий с |использованием этой опции можно найти ниже.
|Варианты использования db2inidb зависят от способа зеркального копирования |устройств хранения. В следующих вариантах использования предполагается, |что вся база данных копируется зеркально, согласованно с системой |хранения.
|В многоузловой среде, прежде чем можно будет использовать отделенную |копию какого-либо из разделов, надо выполнить команду db2inidb для всех |разделов. Утилиту db2inidb можно выполнить для всех разделов |одновременно.
|Цель этой операции - получить клон исходной базы данных, используемый |только для чтения. Далее описывается, как создать клон базы |данных: |
| db2 set write suspend for database
| db2 set write resume for database
|После выполнения этой команды исходная база данных должна вернуться в |обычное состояние.
| db2start
|db2inidb имя_базы_данных AS SNAPSHOT
|Этот процесс можно также использовать для автономного резервного |копирования, но при восстановлении в исходную базу данных такую резервную |копию нельзя использовать для повтора транзакций, поскольку цепочки записей в |журналах не будут совпадать. |
|Так как для зеркальной (резервной) базы данных непрерывно выполняется |повтор транзакций с использованием журналов, новые журналы, создаваемые в |исходной базе данных, постоянно считываются из исходной системы. Далее |описывается, как можно использовать отделенную зеркальную копию в качестве |резервной базы данных: |
| db2 set write suspend for database
| db2 set write resume for database
| db2inidb имя_базы_данных AS STANDBY
|
|Далее описывается, как использовать зеркальную копию базы данных в качестве |резервной копии для восстановления исходной базы данных: |
| db2start
|db2inidb имя_базы_данных AS MIRROR
|Далее описывается, как использовать опцию "relocate" утилиты db2inidb |для создания зеркальной копии базы данных в той же системе, что и исходная |база данных. В этом примере предполагается, что такая база данных будет |использоваться под новым экземпляром. |
| db2 set write suspend for database
| db2 set write resume for database
|
| db2start
| db2inidb имя_базы_данных as STANDBY relocate using config_file