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

«Что такое репликация базы данных?» — вопрос из категории Базы данных, который задают на 24% собеседований PHP Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Репликация БД — это механизм автоматического копирования и синхронизации данных с одного сервера базы данных (источника) на один или несколько других серверов (реплик).

Основные цели и преимущества:

  • Повышение доступности и отказоустойчивости: При падении основного сервера можно переключиться на реплику.
  • Масштабирование чтения: Нагрузку запросов на чтение (SELECT) можно распределить между несколькими репликами.
  • Географическое распределение: Реплики в разных регионах уменьшают задержку для локальных пользователей.
  • Резервное копирование: Реплику можно использовать для создания бекапов без нагрузки на основной сервер.

Типичная архитектура (Master-Slave / Source-Replica):

  1. Мастер (Master / Source): Принимает все операции записи (INSERT, UPDATE, DELETE).
  2. Реплика (Slave / Replica): Копирует изменения с мастера (читает бинарный лог — binlog) и применяет их у себя. Обрабатывает только запросы на чтение.

Возможные проблемы:

  • Задержка репликации (Replication Lag): Данные на реплике могут быть не совсем актуальными.
  • Сложность обработки записей: Архитектура «только для чтения» не подходит для сценариев, где запись должна идти в разные регионы (требуется multi-master или шардинг).

Пример из практики: В нашем проекте мы использовали одну мастер-ноду PostgreSQL и две реплики. Чтение для отчетов и аналитики шло на реплики, разгружая мастер для критичных транзакций. Мониторинг задержки репликации был настроен в Prometheus.