Синхронная и асинхронная репликация
Синхронная репликация означает, что лидер будет ждать от реплики подтверждения и только после этого вернет успешный ответ клиенту.
➕ копия данных на реплике гарантированно актуальна. Если лидер выйдет из строя, можно переключаться на реплику без потери данных.
➖ увеличение времени ответа (обычно репликация занимает меньше секунды, но гарантий нет: могут быть сетевые задержки и другие проблемы)
➖ если синхронная реплика не отвечает (из-за своего сбоя или сбоя сети), то операцию записи завершить не удастся. Лидеру придется блокировать все операции записи и ждать, пока синхронная реплика не станет снова доступна.
Обычно синхронная репликация подразумевает только одну синхронную реплику, а остальные — асинхронные. В случае замедления или недоступности синхронной реплики в неё превращается одна из асинхронных.
Асинхронная репликация означает, что лидер отправит данные на реплику, но для завершения записи не будет дожидаться ответа от реплики.
➕ лидер может выполнять записи даже в случае запаздывания реплик
➖ при фатальном сбое лидера операции, которые не успели реплицироваться, потеряются
Восстановление после отказов
🔴 Отказ реплики
Каждая реплика хранит на своем жестком диске журнал полученных от лидера изменений данных. Если произошел сбой и перезагрузка реплики, то из своего журнала реплика определяет, какая транзакция была обработана перед сбоем и запрашивает у лидера все изменения данных, которые произошли за время недоступности реплики. То есть наверстывает упущенное и продолжает обработку в обычном режиме.
🔴 Отказ лидера
Справиться с отказом лидера сложнее. Нужно:
👉 определить, что лидер отказал
👉 «повысить в звании» одну из реплик до лидера
👉 настроить систему на работу с новым лидером.
Этот процесс называется восстановлением после отказа (failover). Он может выполняться вручную или автоматически. Процесс failover-а сопряжен со многими сложными вопросами, например, тайм-аут для фиксации отказа лидера, отбрасывание не успевших реплицироваться данных после отказа лидера и др.
#кабанчик #сисдиз
Post #54
1.53K

- 👍 7
- ❤🔥 3
- 🔥 3