Что такое репликация в базах данных? Объясните роли Master и Replica.

Ответ

Репликация — это механизм создания и синхронизации копий базы данных на нескольких серверах. Это ключевая технология для обеспечения высокой доступности, отказоустойчивости и масштабирования нагрузки.

В процессе репликации участвуют серверы с разными ролями:

  • Master (Primary): Основной сервер. Он принимает все операции записи (INSERT, UPDATE, DELETE). Является единственным источником правды для данных.
  • Replica (Slave/Secondary): Вторичный сервер, который является копией мастера. Он получает изменения от мастера и применяет их к своему набору данных. Обычно реплики используются для обработки запросов на чтение (SELECT), что позволяет снизить нагрузку на основной сервер.

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

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

Пример настройки потоковой репликации в PostgreSQL:

-- 1. На сервере-мастере (в postgresql.conf):
wal_level = replica
max_wal_senders = 3

-- 2. Создание пользователя для репликации:
CREATE ROLE replicator WITH REPLICATION LOGIN PASSWORD 'secure_password';
# 3. На сервере-реплике (перед запуском):
# Создаем базовую копию с мастера
pg_basebackup -h master_host -D /var/lib/postgresql/data -U replicator -P -v -R

После этого реплика будет подключаться к мастеру и получать все изменения.