Отслеживание контрольных точек

Контрольные точки создаются на главном сервере утилитой lhb, запущенной на каждом резервном сервере, который подключается к системе резервирования. Наличие контрольной точки не позволяет удалять файл системного журнала, пока он не будет скопирован lhb. При своей работе lhb производит сдвиг контрольной точки на более поздние файлы системного журнала по мере их получения, поэтому в нормальном режиме работы файлы системного журнала удаляются сразу же после переноса их на резервные серверы.

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

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

Главный сервер производит периодическую проверку размера системного журнала. Интервал проверки равен интервалу посылки тестовых запросов ядру СУБД ЛИНТЕР. Если размер системного журнала (количество его файлов) превысил заданный, то производится удаление самой старой контрольной точки. При этом все файлы системного журнала от этой контрольной точки до следующей удаляются ядром СУБД ЛИНТЕР. Это предотвращает рост системного журнала на главном сервере. Кроме того, удаление самой старой контрольной точки производится при превышении общего количества контрольных точек. Максимальное значение контрольных точек – 3 точки на сервер, не считая самого сервера. Количество серверов в системе определяется ключом, или, если он не задан, количеством узлов в системе резервирования, описанном в файле nodetab.

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