Замечания по выпуску


|9.1 Глава 8. Восстановление базы данных

|9.1.1 Как использовать приостановленный ввод-вывод

| | | | |

|В главе 8 "Восстановление базы данных" добавлен и обновлен следующий |раздел по использованию функции приостановленного ввода-вывода:

|Прим.:
Представленная ниже информация об утилите db2inidb замещает информацию в |книге Что нового Версии 7.2. |

|С DB2 поставляется новый инструмент db2inidb, позволяющий выполнить |восстановление после сбоев и перевести базу данных в состояние отложенного |повтора транзакций.

|Приостановленный ввод-вывод поддерживает постоянную доступность системы, |полностью реализуя оперативное отделение зеркальной копии, то есть отделение |зеркальной копии без закрытия базы данных. Если пользователь не может |получить автономные или оперативные резервные копии большой базы данных, |резервные копии или копии системы можно получить из ее зеркальной копии, |выполнив приостановку ввода-вывода и отделение зеркальной копии.

|Приостановка ввода-вывода запрещает запись данных на диск, гарантируя |согласованность образа отделенной зеркальной копии базы данных. При |этом будут нормально работать все операции базы данных, кроме операций |оперативного резервного копирования и восстановления. Однако некоторые |операции могут зависать при попытке сохранить на диск измененные страницы из |пула буферов и записать буферы журналов в журналы. Эти операции |продолжат нормальную работу после возобновления ввода-вывода для базы |данных. Важно, чтобы ввод-вывод базы данных был возобновлен из того же |соединения, в котором он был ранее приостановлен. В противном случае |последующая попытка соединения может зависнуть, если для нее потребуется |записи на диск измененных страниц из пула буферов.

|При создании зеркальной копии базы данных прежде всего копируется все |содержимое каталога базы данных. Необходимо также скопировать каталог |журналов и все контейнеры табличных пространств, расположенные вне каталога |базы данных. Поскольку отделенная зеркальная копия базы данных зависит |от путей этих каталогов, пути, в которые копируются эти каталоги, должны быть |такими же, как на исходной системе. Это означает, что экземпляр также |должен быть тем же. Из-за этой зависимости нельзя создать зеркальную |копию базы данных в той же системе, где находится исходная база данных, не |задав для db2inidb новую опцию "relocate".

|Назначение опции "relocate" - изменить положение базы данных на |определенной системе, используя указанный файл конфигурации. При этом |можно изменить внутренний каталог базы данных, имена каталогов контейнеров, |каталог журналов, имя экземпляра и имя базы данных. Если для каталога |базы данных, каталогов контейнеров и каталога журналов были успешно созданы |зеркальные копии в других каталогах на той же системе, что и исходная база |данных, можно использовать утилиту db2inidb с опцией "relocate", чтобы |изменить внутренние пути зеркальной копии базы данных. Сценарий с |использованием этой опции можно найти ниже.

|Варианты использования db2inidb зависят от способа зеркального копирования |устройств хранения. В следующих вариантах использования предполагается, |что вся база данных копируется зеркально, согласованно с системой |хранения.

|В многоузловой среде, прежде чем можно будет использовать отделенную |копию какого-либо из разделов, надо выполнить команду db2inidb для всех |разделов. Утилиту db2inidb можно выполнить для всех разделов |одновременно.

| |

  1. |Создание клона базы данных

    |Цель этой операции - получить клон исходной базы данных, используемый |только для чтения. Далее описывается, как создать клон базы |данных: |

    1. |Приостановите операции записи на диск для исходной базы данных, введя |команду:
      |     db2 set write suspend for database
    2. |Используйте команды уровня операционной системы, чтобы отделить зеркальную |копию от исходной базы данных.
    3. |Возобновите операции записи на диск для исходной базы данных, введя |команду:
      |     db2 set write resume for database

      |После выполнения этой команды исходная база данных должна вернуться в |обычное состояние.

    4. |Смонтируйте отделенную зеркальную копию базы данных из другой |системы.
    5. |Запустите этот экземпляр базы данных, введя команду:
      |     db2start
    6. |Запустите восстановление после сбоев DB2, введя команду:
      |db2inidb имя_базы_данных AS SNAPSHOT
      |Прим.:
      Эта команда отменит состояние приостановки записи и выполнит откат изменений, |внесенных транзакциями во время отделения зеркальной копии. |
      |

    |Этот процесс можно также использовать для автономного резервного |копирования, но при восстановлении в исходную базу данных такую резервную |копию нельзя использовать для повтора транзакций, поскольку цепочки записей в |журналах не будут совпадать. |

  2. |Использование отделенной зеркальной копии в качестве резервной базы данных

    |Так как для зеркальной (резервной) базы данных непрерывно выполняется |повтор транзакций с использованием журналов, новые журналы, создаваемые в |исходной базе данных, постоянно считываются из исходной системы. Далее |описывается, как можно использовать отделенную зеркальную копию в качестве |резервной базы данных: |

    1. |Приостановите операции записи на диск для исходной базы данных.
      |	db2 set write suspend for database
    2. |Используйте команды уровня операционной системы, чтобы отделить зеркальную |копию от исходной базы данных.
    3. |Возобновите операции записи на диск для исходной базы данных, чтобы |вернуть ее в обычный режим.
      |	db2 set write resume for database
    4. |Смонтируйте отделенную зеркальную копию базы данных для другой |системы.
    5. |Переведите зеркальную копию в состояние отложенного повтора и выполните |для нее повтор транзакций.
      |	db2inidb имя_базы_данных AS STANDBY

      |

      |Прим.:
      Эта команда отменит состояние приостановки записи и переведет зеркальную |копию базы данных в состояние отложенного повтора. |
    6. |Скопируйте журналы, установив программу обработчика пользователя для |получения файлов журналов из исходной системы, чтобы для этой зеркальной копии |базы данных были доступны самые последние журналы.
    7. |Выполните для базы данных повтор транзакций до конца журналов.
    8. |Вернитесь к шагу f и повторяйте данный процесс, пока исходная база данных |не будет закрыта. |

    |

  3. |Использование отделенной зеркальной копии в качестве резервной копии

    |Далее описывается, как использовать зеркальную копию базы данных в качестве |резервной копии для восстановления исходной базы данных: |

    1. |При помощи команд операционной системы скопируйте данные и журналы |зеркальной копии на место первичной базы данных.
    2. |Запустите этот экземпляр базы данных, введя команду:
      |     db2start
    3. |Выполните следующую команду, чтобы перевести зеркальную базу данных в |состояние отложенного повтора и отменить состояние приостановленной |записи.
      |db2inidb имя_базы_данных AS MIRROR
    4. |Выполните для базы данных повтор транзакций до конца журналов. |
    |
  4. |Отделение зеркальной копии в той же системе, что и исходная база данных

    |Далее описывается, как использовать опцию "relocate" утилиты db2inidb |для создания зеркальной копии базы данных в той же системе, что и исходная |база данных. В этом примере предполагается, что такая база данных будет |использоваться под новым экземпляром. |

    1. |Создайте новый экземпляр в текущей системе.
    2. |Приостановите операции записи на диск для исходной базы данных.
      |	db2 set write suspend for database
    3. |Используйте команды уровня операционной системы, чтобы отделить зеркальную |копию от исходной базы данных.
      |Прим.:
      Каталог базы данных, каталоги контейнеров и каталог журналов должны быть |скопированы в другие каталоги. Если каталоги контейнеров или каталог |журналов находятся под каталогом базы данных, нужно скопировать только каталог |базы данных. |
    4. |Возобновите операции записи на диск для исходной базы данных, чтобы |вернуть ее в обычный режим.
      |	db2 set write resume for database
    5. |Создайте файл конфигурации, содержащий следующую информацию:
      | DB_NAME=<имя>,<необязательное новое имя>
      | DB_PATH=<путь каталога исходной БД>,<путь каталога зеркальной копии БД>
      | INSTANCE=<экземпляр исходной БД>,<экземпляр зеркальной копии>
      | LOG_DIR=<каталог журналов исходной БД>,<каталог журналов зеркальной копии>
      | CONT_PATH=<путь первичного контейнера БД номер 1>,
      | <путь зеркального контейнера БД номер 1> ...
      | CONT_PATH=<путь первичного контейнера БД номер n>,
      | <путь зеркального контейнера БД номер n>
      | NODENUM=<номер узла>

      |

      |Прим.:
      Поля LOG_DIR и CONT_PATH требуются только в тех случаях, когда каталог |журналов или каталоги контейнеров расположены вне каталога базы данных. |Все остальные поля - обязательные, за исключением NODENUM (если номер узла не |задан, по умолчанию используется нулевое значение). |
    6. |Запустите базу данных из созданного нового экземпляра.
      |	db2start
    7. |Измените положение зеркальной копии базы данных, отмените для нее |состояние приостановки и переведите ее в состояние отложенного повтора |транзакций:
      |	db2inidb имя_базы_данных as STANDBY relocate using config_file
    8. |Скопируйте журналы, установив программу обработчика пользователя для |получения файлов журналов из исходной базы данных, чтобы для этой зеркальной |копии базы данных были доступны самые последние журналы.
    9. |Выполните для базы данных повтор транзакций до конца журналов.
    10. |Вернитесь к шагу h и повторяйте данный процесс, пока исходная база данных |не будет закрыта. |
    |


[ Начало страницы | Страница назад | Страница вперед | Содержание | Индекс ]