Что такое репликация в базах данных и каковы её основные цели?

Ответ

Репликация — это процесс создания и поддержания точных копий (реплик) базы данных на нескольких серверах. Основной сервер называется мастером (master) или основным (primary), а копии — репликами (replicas) или ведомыми (slaves).

Основные цели репликации:


  1. Повышение отказоустойчивости и доступности (High Availability):

    Если мастер-сервер выходит из строя, одна из реплик может быть "повышена" до нового мастера. Это минимизирует время простоя и обеспечивает непрерывную работу приложения.



  2. Распределение нагрузки (Load Balancing):

    Нагрузку можно распределить, направляя все операции записи (INSERT, UPDATE, DELETE) на мастер, а операции чтения (SELECT) — на одну или несколько реплик. Это значительно повышает производительность систем с высокой долей чтений.



  3. Уменьшение задержек (Latency Reduction):

    Реплики можно размещать географически ближе к пользователям. Пользователи из Азии могут читать данные с сервера в Сингапуре, а пользователи из Европы — с сервера во Франкфурте, что значительно сокращает время отклика.



  4. Аналитика и резервное копирование:

    Тяжелые аналитические запросы или процессы резервного копирования можно выполнять на реплике, не создавая дополнительной нагрузки на основной сервер, который обслуживает трафик приложения.


Типы репликации:

  • Асинхронная: Мастер отправляет изменения на реплики и не ждет подтверждения. Это обеспечивает максимальную производительность, но есть риск потери данных (replication lag), если мастер упадет до того, как изменения дойдут до реплик.
  • Синхронная: Мастер ждет подтверждения от одной или всех реплик, прежде чем завершить транзакцию. Это гарантирует отсутствие потерь данных, но увеличивает задержку операций записи.