Объясните архитектуру репликации Master-Slave. Каковы её преимущества и недостатки?

Ответ

Репликация Master-Slave (также известная как Leader-Follower или Primary-Replica) — это асинхронный процесс копирования данных с одного сервера базы данных (Master) на один или несколько других серверов (Slaves).

Принцип работы:

  1. Все операции записи (INSERT, UPDATE, DELETE) выполняются только на Master сервере.
  2. Master записывает изменения в свой бинарный лог (binary log).
  3. Slave серверы подключаются к мастеру, считывают этот лог и последовательно применяют изменения к своей копии данных.

Преимущества (Плюсы):

  • Распределение нагрузки на чтение (Read Scaling): Запросы на чтение (SELECT) можно направлять на слейвы, что снижает нагрузку на основной сервер. Идеально для систем с преобладанием чтения.
  • Повышение отказоустойчивости (High Availability): Если мастер выходит из строя, один из слейвов можно "повысить" до нового мастера (процесс называется failover), что минимизирует время простоя.
  • Резервное копирование: Можно делать бэкапы со слейва, не останавливая и не нагружая мастер-сервер.
  • Простота настройки: Эта схема проще в реализации по сравнению с более сложными, такими как Master-Master или кластерные решения.

Недостатки (Минусы):

  • Отставание репликации (Replication Lag): Из-за асинхронной природы данные на слейвах могут быть неактуальными. Приложения должны быть готовы к тому, что только что записанные данные могут быть недоступны для чтения со слейва.
  • Мастер — единая точка отказа для записи: Если мастер недоступен, запись в базу данных останавливается до момента переключения на новый мастер.
  • Сложность автоматического Failover: Процесс переключения на новый мастер может быть нетривиальным и требует дополнительных инструментов (например, Orchestrator, Patroni) или ручного вмешательства.
  • Потеря данных при сбое: В асинхронном режиме, если мастер выходит из строя до того, как транзакции были переданы на слейвы, эти данные могут быть потеряны. Синхронная репликация решает эту проблему, но сильно замедляет запись.