Ответ
Репликация — это механизм автоматического копирования и синхронизации данных с одного сервера БД (источник, мастер) на один или несколько других серверов (реплики).
Основные цели:
- Повышение доступности: При падении мастера реплика может стать новой основной БД.
- Масштабирование чтения: Запросы на чтение можно распределять по репликам, разгружая мастер.
- Геораспределение: Размещение данных ближе к пользователям.
- Резервное копирование: Реплика может использоваться для "горячего" бэкапа без остановки основной БД.
Типы репликации по согласованности:
| Тип | Принцип работы | Плюсы | Минусы |
|---|---|---|---|
| Асинхронная | Мастер подтверждает запись клиенту ДО отправки данных репликам. | Высокая производительность записи. | Возможна потеря данных при сбое мастера (несинхронизированные данные). |
| Синхронная | Мастер ждет подтверждения записи от ВСЕХ реплик, прежде чем ответить клиенту. | Полная согласованность данных (RDBMS). | Высокая задержка записи, доступность зависит от самой медленной реплики. |
| Полусинхронная | Мастер ждет подтверждения хотя бы от ОДНОЙ реплики. | Компромисс между производительностью и надежностью. | Задержка выше, чем у асинхронной. |
Пример настройки реплики в MySQL:
-- На реплике
CHANGE MASTER TO
MASTER_HOST='master-host-ip',
MASTER_USER='repl_user',
MASTER_PASSWORD='secure_password',
MASTER_LOG_FILE='mysql-bin.000003',
MASTER_LOG_POS=154;
START SLAVE; -- Запуск процесса репликации
SHOW SLAVE STATUSG -- Проверка статуса