Ответ
В репликации баз данных реплика (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();