Аварийное переключение кластера Stand-In
Предусловия
- Развернуты 4 воркера репликации.
- Графы репликации (прямого и обратного направления) уже созданы, настроены и запущены.
- Пользователь авторизован под ролью
APPADMINилиAPPDUTY. - Клиентские модули доступны и готовы к переключению.
Процесс
-
Пользователь в веб-интерфейсе GraDeLy Console переходит в раздел "Stand-in".
-
Нажимает на кнопку "…" рядом с нужным кластером и выбирает опцию "Принудительное переключение".
-
UI отправляет REST-запрос на сервер:
POST /cluster/{clusterId}/switch?isForce=true -
API Console GraDeLy пересылает запрос:
- Сначала — на воркер захвата.
- Если он недоступен — на воркер применения (fallback-механизм).
-
Воркер:
- Получает параметр
isForce=true. - Публикует сообщение в топик Kafka
standin-stateсо статусом:
status = REQUEST- Не ожидает появления вотермарки в таблице
$GRADELY_SWITCHOVER$. - Сам генерирует подтверждение готовности.
- Отправляет сообщение в топик
standin-stateсо статусом:
status = COMPLETE- Это сигнализирует, что переключение может начинаться без участия клиентов.
- Получает параметр
-
Клиентские модули (если они работают):
- Считывают сообщение
REQUEST. - Переводят приложение в режим read-write на новой основной базе (Stand-In).
- Продолжают работу.
- Считывают сообщение
-
Веб-интерфейс GraDeLy:
- Обновляет статус кластера на "SwitchOver (forced)".
- Отображает предупреждение: "Переключение выполнено принудительно. Возможна потеря данных. Проверьте согласованность БД."