Ответ
Репликация в базах данных — это процесс автоматического копирования и синхронизации данных с одного сервера БД (источника, мастера) на один или несколько других серверов (реплик).
Основные задачи, решаемые репликацией:
| Задача | Описание |
|---|---|
| Повышение доступности и отказоустойчивости | При сбое мастера одна из реплик может быть быстро назначена новой основной БД (failover). |
| Масштабирование чтения | Запросы на чтение (SELECT) распределяются по репликам, разгружая мастер для операций записи. |
| Географическое распределение | Размещение реплик ближе к пользователям в разных регионах снижает сетевую задержку (latency). |
| Аналитика и бэкапы | Резервные копии и тяжелые аналитические запросы выполняются на репликах, не влияя на основную OLTP-нагрузку. |
Типы репликации:
- Синхронная: Мастер ждет подтверждения записи от всех реплик перед ответом клиенту. Гарантирует консистентность, но снижает производительность.
- Асинхронная: Мастер не ждет реплик. Выше производительность, но возможна потеря данных при сбое мастера (окно расхождения).
Базовый принцип (на примере логической репликации):
- Мастер записывает каждое изменение данных в бинарный лог (binlog, WAL).
- Реплика подключается к мастеру и запрашивает копию бинарного лога.
- Реплика применяет полученные изменения (SQL-запросы или операции с данными) локально в том же порядке.
Пример команды для инициирования репликации в MySQL:
-- На реплике
CHANGE REPLICATION SOURCE TO
SOURCE_HOST='master_host',
SOURCE_USER='replica_user',
SOURCE_PASSWORD='password',
SOURCE_LOG_FILE='binlog.000002',
SOURCE_LOG_POS=856;
START REPLICA;