Что такое реплика (ранее Slave) в контексте репликации баз данных и для чего она используется?

Ответ

В репликации баз данных реплика (Replica), также известная как ведомый (Follower) или по устаревшей терминологии слейв (Slave), — это копия основной (Primary/Master) базы данных.

Реплика асинхронно или синхронно получает все изменения (транзакции) с основной базы и применяет их к себе, поддерживая актуальное состояние данных.

Основные цели использования:

  • Масштабирование чтения (Read Scaling): Нагрузка на чтение распределяется по нескольким репликам, что значительно снижает нагрузку на основную базу данных, которая занимается только записью.
  • Высокая доступность (High Availability): В случае сбоя основной базы, одна из реплик может быть "повышена" до роли новой основной базы (процесс называется failover), что минимизирует время простоя сервиса.
  • Резервное копирование (Backup): Резервные копии можно снимать с реплики без остановки и без дополнительной нагрузки на основную базу данных.
  • Геораспределение: Размещение реплик в разных географических регионах позволяет уменьшить задержку (latency) для пользователей из этих регионов.

Ключевые аспекты:

  • Задержка репликации (Replication Lag): Существует временная задержка между записью данных в основную базу и их появлением в реплике. Это важный фактор, который нужно учитывать при проектировании системы (проблема Eventually Consistent).
  • Типы репликации: Бывает асинхронной (по умолчанию), синхронной и полусинхронной, что влияет на гарантии сохранности данных и производительность.
  • Топология: Помимо простой Master-Replica, существуют более сложные схемы, такие как Master-Master, каскадная репликация и кольцевая.
-- Пример проверки статуса реплики в PostgreSQL
-- Запрос вернет true, если сервер находится в режиме восстановления, т.е. является репликой.
SELECT pg_is_in_recovery();