Middle
38
questionbank

Какие существуют виды репликации для таблиц в базах данных?

Получайте ответы на вопросы в реальном времени с Sobes Copilot
Ответ от нейросети sobes.tech

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

  • Синхронная репликация: Транзакция считается завершенной только после того, как она подтверждена как на мастере, так и на реплике. Обеспечивает высокую согласованность данных, но может замедлить выполнение транзакций из-за ожидания подтверждения от реплики.

  • Асинхронная репликация: Транзакция считается завершенной сразу после ее выполнения на мастере. Данные копируются на реплику с некоторой задержкой. Обеспечивает более высокую производительность записи на мастер, но может возникнуть расхождение между мастером и репликой в случае сбоя мастера до того, как изменения будут скопированы.

  • Полусинхронная (или Quorum) репликация: Компромисс между синхронной и асинхронной. Транзакция считается завершенной после того, как она подтверждена мастером и по крайней мере одной (или определенным количеством) репликой. Снижает задержку по сравнению с синхронной и уменьшает риск потери данных по сравнению с асинхронной.

  • Логическая репликация: Реплицируются только изменения на логическом уровне (например, INSERT, UPDATE, DELETE). Позволяет гибко выбирать, какие данные и таблицы реплицировать, а также реплицировать между разными версиями или даже разными СУБД.

  • Физическая репликация: Реплицируются изменения на физическом уровне (например, блоки данных, WAL/redo logs). Обычно быстрее логической, но менее гибкая и требует одинаковой версии СУБД и архитектуры.

С точки зрения топологии репликация бывает:

  • Мастер-реплика (или Master-Slave): Один мастер, который обрабатывает запись, и одна или несколько реплик, которые используются для чтения.
  • Мастер-мастер (или Multi-Master): Несколько узлов могут одновременно выступать в роли мастера. Требует разрешения конфликтов при одновременной записи в одни и те же данные на разных мастерах.
  • Кольцевая (или Circular): Каждый узел может быть мастером для следующего узла в кольце и репликой для предыдущего.
  • Звездная (или Star): Один центральный мастер, который реплицирует данные на периферийные узлы, а периферийные узлы реплицируют обратно на центральный (реже).

При выборе вида репликации учитываются требования к:

  • Согласованности данных (Consistency)
  • Доступности (Availability)
  • Производительности (Performance)
  • Стойкости к сбоям (Fault Tolerance)