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

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

Ответ

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

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

  1. Мастер-реплика (Master-Slave):

    • Мастер — обрабатывает все операции записи (INSERT, UPDATE, DELETE).
    • Реплики — получают изменения с мастера и обслуживают только запросы на чтение (SELECT).
    • Задача DevOps: Настроить автоматическое переключение (failover) на реплику при падении мастера.
  2. Мульти-мастер (Multi-Master): Несколько узлов могут принимать записи. Требует разрешения конфликтов.

Методы репликации:

  • На основе бинарного лога (Binary Log Replication): Мастер записывает изменения в бинарный лог, реплики читают и применяют его (используется в MySQL, PostgreSQL).
  • Логическая репликация (Logical Replication): Реплицируются изменения на уровне строк или операторов, что позволяет выбирать конкретные таблицы (PostgreSQL).
  • Снимки (Snapshot Replication): Периодическая полная копия данных.

Пример настройки read replica в AWS RDS (через консоль):

  1. Выбрать исходный инстанс БД (master).
  2. В меню действий выбрать "Create read replica".
  3. Указать регион (можно кросс-регион для DR).
  4. RDS автоматически настроит репликацию и будет поддерживать её.

Практическое применение в DevOps:

  • Горизонтальное масштабирование: Направлять тяжёлую аналитику на реплики, разгружая мастер.
  • Резервное копирование: Создавать резервные копии с реплики, чтобы не нагружать мастер.
  • Тестирование: Использовать реплику для запуска тестов на актуальных данных.
  • Гео-распределение: Размещать реплики ближе к пользователям в других регионах для снижения задержки.