Резервирование

При выполнении проекта «КАСКАД Цифра» на двух резервированных серверах, которые используют одну базу данных, оба менеджеры РБД должны обеспечивать синхронную резервируемую репликацию. Задача резервируемой репликации заключается в бесконфликтной записи потоков данных обоих менеджеров РБД (активного и пассивного), или же записи тех же данных дважды.

Задачи активного/пассивного менеджера РБД

Потоки данных в ОЗУ или на локальном жестком диске (функция «BufferToDisk») активного и пассивного менеджера РБД идентичны. Отличия между обеими менеджерами РБД заключаются в задачах и разрешениях, которые перечислены ниже.

Активный менеджер РБД

Активный менеджер РБД — этот тот менеджер, сервер которого занимает ведущее положение. Во время резервируемой репликации, активный менеджер РБД отвечает за следующие процессы:

  1. Он буферизирует все потоки данных активного сервера в ОЗУ или, кроме того, на локальный диск (функция «BufferToDisk»).
  2. В отличие от пассивного менеджера РБД, активный менеджер РБД имеет разрешение на запись буферизированных блоков данных в базу данных.
  3. После каждого записанного блока данных, активный менеджер РБД устанавливает временные метки «DPTime» и «DPName», взятые из содержимого последней записи блока, внутренним точкам данных «_RDBArchive.writingStatus.lastWrite» и «_RDBArchive.writingStatus.lastDp«.

Пассивный менеджер РБД

Пассивный менеджер РБД — это менеджер, сервер которого относится к устройствам быстродействующего автоматического включения резерва. Во время резервируемой репликации, пассивный менеджер РБД отвечает за следующие процессы:

  1. Он буферизирует все потоки данных пассивного сервера в ОЗУ или, также, на локальный диск (функция «BufferToDisk»).
  2. Он считывает отметки внутренних точек данных «_RDBArchive.writingStatus.lastDp» и «_RDBArchive.writingStatus.lastWrite«, которые были заданы активным менеджером РБД, и сравнивает их со значениями своего потока данных. Если обе пары метки идентичны, пассивный менеджер РБД удаляет все блоки данных в своем потоке данных, которые были сохранены перед сравнением записи.

ПРИМЕЧАНИЕ

В связи с тем, что блоки данных, которые были записаны в БД активным менеджером РБД, должны быть удалены из потока данных пассивного менеджера РБД, в файле конфигурации необходимо обеспечить наличие следующих параметров конфигурации:

fwdDp = «_RDBArchive.writingStatus.lastWrite» /для активного сервера
fwdDp = «_RDBArchive_2.writingStatus.lastWrite» /для пассивного сервера

ПРИМЕЧАНИЕ

Во время слишком быстрого переключения резервирования может произойти «зависание» менеджера РБР при потере сетевого подключения во время вызова сервера Oracle. Если сетевое подключение отсутствует в течение длительного периода времени, Oracle SQL*Net распознает это при условии, что запись реестра «KeepAliveTime» меньше периода потери связи. Если подключение восстанавливается раньше значения «KeepAliveTime», менеджер РБД «зависает».
Решение: Выполнить переключение резервирования в ручном режиме, а также выполнить перезапуск «зависшего» менеджера РБД.
Следует отметить, что эта проблема не имеет отношение к «КАСКАД Цифра», так как она связана с Oracle.

Пример

Активные и пассивные менеджеры РБД принимают одинаковый поток данных. Поскольку порядок блоков обеих менеджеров является асинхронным, полученные блоки имеют различные размеры (см. рисунок ниже). Этот пример демонстрирует взаимодействие активного и пассивного менеджера РБД.

Рисунок: Различные блоки одних и тех же потоков данных

Активный менеджер РБД

Одиночные данные обрабатываются без взаимодействия с пассивным менеджером РБД.

  1. Данные (команды, изменения и т.п.) обобщены в блоках данных и буферизируются в ОЗУ или же на жестком диске (активная функция «BufferToDisk»).
  2. Отсюда блоки обрабатываются и, впоследствии, записываются в базу данных.
  3. Непосредственно после записи всего блока данных в БД, содержание последней записи (напр., блока данных 11, последняя запись имеет содержание «DbName 30, DPTime 30») задается для внутренних точек данных «_RDBArchive.writingStatus.lastDp» и «_RDBArchive.writingStatus.lastWrite.«.
  4. Согласно того же рисунка, все блоки последовательно записываются в базу данных.

Пассивный менеджер РБД

Одиночные данные обрабатываются без взаимодействия с активным менеджером РБД.

  1. Данные (с командами, изменениями и т.п.) обобщены в блоках данных и буферизируются в ОЗУ или же на жестком диске (активная функция «BufferToDisk»).
  2. Считываются метки внутренних точек данных, которые были заданы активным менеджером РБД (в данном примере “DPName 30” и “DPTime 30″).
  3. Пассивные менеджер сравнивает считанную пару меток с содержимым своих блоков данных.
  4. В случае обнаружения пары в блоке (явно определенных как «DPName» и «DPTime»), пассивный менеджер РБД автоматически удаляет все старые блоки из его потока данных (в этом примере блок данных 5), так как эти блоки данных уже были записаны в БД активным менеджером РБД.
  5. В случае невозможности обнаружения пары, сохраняются все блоки данных.

Сбой сервера

В случае сбоя активного сервера, пассивные сервер автоматически возлагает на себя его задания и разрешения. После этого, пассивный сервер (теперь он активный) осуществляет запись данных а БД и устанавливает метки “DPName” и “DPTime” для внутренних точек данных. Риск того, что более свежие метки могут быть перезаписаны более ранними метками, которые пассивный сервер буферизировал в своем ОЗУ перед сбоем, а также записи данных дважды в базу данных предотвращен благодаря функции удаления, аналогично действиям в пассивном состоянии.

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *