Горячее резервирование БД

Для обеспечения сохранности данных в СУБД ЛИНТЕР, функционирующей в ОС типа UNIX, включена подсистема горячего резервирования. Она выполняет полное дублирование процессов ведения БД главного сервера на резервном сервере. Горячее резервирование означает, что выход из строя одного из дублирующих серверов не будет замечен прикладными процессами, имеющими выполняющиеся запросы к БД главного сервера, и не повлияет на результаты последующих запросов. В подсистему заложены возможности «поднятия упавшего сервера» и восстановления процесса горячего резервирования после устранения нештатной ситуации.

Главный сервер – компьютер, на котором в данный момент работает ядро СУБД ЛИНТЕР под управлением системы резервирования и находится активная БД.

Резервный сервер – компьютер, работающий в паре с главным сервером, на котором в данный момент работает система резервирования и ведется копия БД главного сервера.

Серверы системы резервирования – компьютеры, предназначенные для выполнения функций главного/резервного серверов.

В основу горячего резервирования БД положены следующие принципы:

  1. использование двух и более серверов в комплексе, каждый из которых может иметь одну и более линии связи;

  2. на одном из серверов работает СУБД ЛИНТЕР. СУБД на этом сервере отрабатывает пользовательские запросы и хранит данные в своей БД. Этот сервер в дальнейшем будем называть главным сервером;

  3. остальные сервера ведут копию БД главного сервера. Они непрерывно получают данные об изменениях БД с главного сервера по протоколу TCP/IP. В минимальной конфигурации должен быть хотя бы один резервный сервер;

  4. управление запуском и остановом компонентов подсистемы резервирования берет на себя специализированная программа – «сервер резервирования»;

  5. сервер резервирования при аварийном завершении компонентов подсистемы резервирования анализирует их коды завершения и, если возможно, осуществляет их автоматический перезапуск;

  6. сервер резервирования, работающий на одном из компьютеров, обменивается информацией с остальными серверами резервирования и следит за их состоянием;

  7. при отказе (или принудительном останове) главного сервера один из резервных серверов запускает СУБД ЛИНТЕР для работы с копией БД, полученной с главного сервера. С этого момента данный сервер становится главным сервером;

  8. запросы клиентских приложений к СУБД ЛИНТЕР автоматически переадресуются главному серверу, даже при смене функции серверов.

Особенности функционирования системы резервирования:

  • главный и резервный серверы не привязаны жестко к своим компьютерам;

  • в процессе работы может происходить смена ролей серверов подсистемы резервирования по команде оператора или в случае проблем с главным сервером или линией связи;

  • для того чтобы СУБД ЛИНТЕР полностью выполняла свои функции, достаточно работы главного сервера, однако в этом случае надежность комплекса снижается;

  • резервный сервер может быть запущен в любое время после запуска главного. Его подключение «не видно» пользователям СУБД ЛИНТЕР;

  • компьютер может выполнять функцию резервного сервера только тогда, когда работает главный сервер;

  • при отказе главного сервера его функции принимает резервный сервер (становится главным). При этом все запросы к СУБД ЛИНТЕР, выполняющиеся в данный момент, возвращаются клиентским приложениям с соответствующим кодом завершения (информирует о том, что произошла смена главного сервера и запрос надо повторить);

  • БД на резервном компьютере содержит полную копию рабочей БД на момент запуска подсистемы резервирования и накопленные изменения в БД главного сервера на текущий момент;

  • поскольку архив рабочей БД постоянно возрастает в объеме (особенно при сильно обновляемой БД) за счет файлов системного журнала, то на резервном компьютере также работает ядро СУБД ЛИНТЕР в специальном режиме, которое переносит изменения из системного журнала в таблицы БД. Однако в момент получения таблиц БД также существует вероятность отказа главного сервера. Поэтому перед началом получения копии БД с главного сервера БД резервного сервера сохраняется в архивном каталоге. Таким образом, в подсистеме резервирования всегда (кроме начального момента) на резервном компьютере имеются две БД;

  • подключение резервного компьютера и выравнивание БД выполняется незаметно для пользователя.