Ответ
Репликация — это процесс создания и синхронизации копий данных на нескольких серверах (узлах). Копия основного сервера называется репликой.
Основные цели репликации:
- Отказоустойчивость (High Availability): Если основной сервер (мастер) выходит из строя, система может переключиться на реплику, минимизируя время простоя.
- Масштабирование нагрузки (Scalability): Читающие запросы можно распределить между репликами, снижая нагрузку на основной сервер. Это называется масштабированием чтения (read scaling).
- Географическое распределение: Размещение реплик ближе к пользователям по всему миру позволяет уменьшить задержку (latency) при доступе к данным.
Основные топологии репликации:
Master-Slave (Ведущий-ведомый):
- Все операции записи (
INSERT
,UPDATE
,DELETE
) выполняются на одном сервере — мастере. - Мастер передает изменения на один или несколько ведомых серверов (реплик).
- Реплики обычно используются для чтения данных.
- Это самая простая и распространенная топология.
- Все операции записи (
Master-Master (Ведущий-ведущий):
- Два или более серверов могут принимать операции записи.
- Каждый мастер реплицирует свои изменения на другие мастеры.
- Сложность: Возникает проблема разрешения конфликтов, когда одни и те же данные изменяются одновременно на разных мастерах.
Синхронная vs. Асинхронная репликация
Синхронная: Мастер подтверждает операцию записи только после того, как все (или кворум) реплики подтвердили получение изменений.
- Плюс: Гарантирует высокую консистентность данных.
- Минус: Увеличивает задержку записи.
Асинхронная: Мастер подтверждает запись сразу, а изменения на реплики отправляются в фоновом режиме.
- Плюс: Низкая задержка записи.
- Минус: Возможна потеря данных при сбое мастера до того, как изменения дошли до реплик. Возникает лаг репликации (replication lag).