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

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

Ответ

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

Основные цели:

  • Повышение доступности: При падении мастера реплика может стать новой основной БД.
  • Масштабирование чтения: Запросы на чтение можно распределять по репликам, разгружая мастер.
  • Геораспределение: Размещение данных ближе к пользователям.
  • Резервное копирование: Реплика может использоваться для "горячего" бэкапа без остановки основной БД.

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

Тип Принцип работы Плюсы Минусы
Асинхронная Мастер подтверждает запись клиенту ДО отправки данных репликам. Высокая производительность записи. Возможна потеря данных при сбое мастера (несинхронизированные данные).
Синхронная Мастер ждет подтверждения записи от ВСЕХ реплик, прежде чем ответить клиенту. Полная согласованность данных (RDBMS). Высокая задержка записи, доступность зависит от самой медленной реплики.
Полусинхронная Мастер ждет подтверждения хотя бы от ОДНОЙ реплики. Компромисс между производительностью и надежностью. Задержка выше, чем у асинхронной.

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

-- На реплике
CHANGE MASTER TO
  MASTER_HOST='master-host-ip',
  MASTER_USER='repl_user',
  MASTER_PASSWORD='secure_password',
  MASTER_LOG_FILE='mysql-bin.000003',
  MASTER_LOG_POS=154;

START SLAVE; -- Запуск процесса репликации
SHOW SLAVE STATUSG -- Проверка статуса