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

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

Ответ

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

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

  1. Master-Slave (Источник-Реplica): Один сервер (мастер) принимает операции записи, а один или несколько слейвов реплицируют данные только для чтения.
  2. Master-Master (Multi-Master): Несколько серверов могут принимать операции записи и синхронизировать изменения между собой.

Пример настройки Master-Slave в MySQL

-- На мастере
CREATE USER 'repl'@'%' IDENTIFIED BY 'password';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';
SHOW MASTER STATUS; -- Запомните File и Position

-- На слейве
CHANGE MASTER TO
  MASTER_HOST='master_host',
  MASTER_USER='repl',
  MASTER_PASSWORD='password',
  MASTER_LOG_FILE='binlog.000001',
  MASTER_LOG_POS=154;
START SLAVE;

Преимущества и недостатки

Плюсы:

  • Отказоустойчивость: При падении мастера слейв может быть повышен.
  • Производительность: Распределение запросов на чтение по репликам.
  • Геораспределение: Размещение данных ближе к пользователям.

Минусы:

  • Сложность: Настройка и поддержка.
  • Задержка (Replication Lag): Данные на репликах могут быть неактуальны.
  • Конфликты записи: В multi-master топологиях требуются стратегии разрешения конфликтов.