Ответ
Репликация Master-Slave (также известная как Leader-Follower или Primary-Replica) — это асинхронный процесс копирования данных с одного сервера базы данных (Master) на один или несколько других серверов (Slaves).
Принцип работы:
- Все операции записи (
INSERT
,UPDATE
,DELETE
) выполняются только на Master сервере. - Master записывает изменения в свой бинарный лог (binary log).
- Slave серверы подключаются к мастеру, считывают этот лог и последовательно применяют изменения к своей копии данных.
Преимущества (Плюсы):
- Распределение нагрузки на чтение (Read Scaling): Запросы на чтение (
SELECT
) можно направлять на слейвы, что снижает нагрузку на основной сервер. Идеально для систем с преобладанием чтения. - Повышение отказоустойчивости (High Availability): Если мастер выходит из строя, один из слейвов можно "повысить" до нового мастера (процесс называется failover), что минимизирует время простоя.
- Резервное копирование: Можно делать бэкапы со слейва, не останавливая и не нагружая мастер-сервер.
- Простота настройки: Эта схема проще в реализации по сравнению с более сложными, такими как Master-Master или кластерные решения.
Недостатки (Минусы):
- Отставание репликации (Replication Lag): Из-за асинхронной природы данные на слейвах могут быть неактуальными. Приложения должны быть готовы к тому, что только что записанные данные могут быть недоступны для чтения со слейва.
- Мастер — единая точка отказа для записи: Если мастер недоступен, запись в базу данных останавливается до момента переключения на новый мастер.
- Сложность автоматического Failover: Процесс переключения на новый мастер может быть нетривиальным и требует дополнительных инструментов (например, Orchestrator, Patroni) или ручного вмешательства.
- Потеря данных при сбое: В асинхронном режиме, если мастер выходит из строя до того, как транзакции были переданы на слейвы, эти данные могут быть потеряны. Синхронная репликация решает эту проблему, но сильно замедляет запись.