Модель асинхронной репликации
Взаимодействие компонентов репликации данных приведено на рисунке 15.
В системе асинхронной репликации участвуют два или более ЛИНТЕР-серверов, на каждом из которых работает:
-
ядро СУБД источника (ядро СУБД приемника);
-
ядро СУБД репликации;
-
сетевой драйвер клиента
-
сервер репликации.
Объектами репликации являются таблицы БД, список которых вместе с правилами и адресами рассылки хранится в БД-источнике репликации.
БД может быть только приемником, только источником или одновременно и источником и приемником данных репликации. На одном сервере может быть запущено несколько серверов репликации для разных БД.
Очереди репликации – это таблицы БД репликации. БД репликации используется сервером репликации для хранения данных, подлежащих рассылке и принятых от других серверов системы репликации. Таблицы БД репликации могут быть использованы администратором системы репликации для анализа сбойных ситуаций или же для сбора статистики.
Сервер репликации на стороне БД-источника, получает информацию об изменении данных в БД-источнике и сохраняет ее в очереди рассылки (таблица БД репликации). Элемент очереди рассылки включает в себя полную информацию о старом и новом состоянии реплицируемой записи, адрес назначения, номер канала, производящего операцию, номер транзакции и время операции. В качестве первичного ключа этой таблицы используется время операции. Затем сервер репликации устанавливает соединение с сервером репликации приемника и отправляет ему измененные данные. Соединение устанавливается один раз и далее процесс рассылки и приема данных работает по этому соединению.
Сервер репликации приемника, получает данные от сервера репликации источника и помещает их в приемную очередь (таблица БД репликации).
После этого сервер репликации приемника формирует ответ, уведомляющий отправителя о нормальном завершении приема данных. А затем (после того, как получена команда завершения транзакции COMMIT) сервер репликации приемника вносит изменения в таблицы БД-приемника репликации. Коды завершения транзакций сохраняются в таблице приемной очереди.
Репликация данных происходит по первичным ключам, т.е. каждая таблица, подлежащая репликации, должна содержать первичный ключ, значение которого используется для идентификации (при удалении и изменении значений) в реплицируемых таблицах.
Есть три модели поведения системы при возникновении рассогласования между значениями записей в БД реплицируемых серверов. Если такая ситуация возникла во время выполнения операции корректировки/удаления данных, можно предпринять следующие действия:
-
игнорировать несовпадение старого значения;
-
обязательно проверить старое состояние и вернуть ошибку, если нет полного совпадения;
-
если не совпадают числовые значения, сохранить разницу между старым и новым значением.
Неразрешимые коллизии могут возникнуть при одновременной вставке во взаимно реплицируемые таблицы одинакового значения первичного ключа.
В качестве протокола проделанной работы используется файл трассировки. Он может формироваться как в виде одного файла, так и в виде группы файлов.
При необходимости администратор системы репликации может очистить очереди сервера репликации, при этом будут удалены все уже реплицированные записи, или только записи за указанный период.
Управление асинхронной репликацией в среде UNIX выполняется с помощью командного файла или специальных скриптов, а в среде Windows может выполняться как с помощью командного файла, так и с помощью сервисных средств СУБД ЛИНТЕР.