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

Ответ

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

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

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

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

  1. Master-Slave (Primary-Replica)

    • Принцип: Все операции записи (INSERT, UPDATE, DELETE) выполняются на одном главном узле (master), а затем копируются на один или несколько ведомых узлов (slaves). Slaves обычно обрабатывают только запросы на чтение.
    • Преимущества: Простота настройки, отсутствие конфликтов записи.
    • Недостатки: Master является единой точкой отказа.
  2. Master-Master (Multi-Master)

    • Принцип: Все узлы в кластере являются главными и могут принимать как запросы на чтение, так и на запись. Изменения, сделанные на одном узле, синхронизируются с остальными.
    • Преимущества: Высокая доступность записи; нет единой точки отказа.
    • Недостатки: Сложность разрешения конфликтов (когда одни и те же данные изменяются одновременно на разных узлах).

Пример: логическая репликация в PostgreSQL

-- 1. На MASTER-сервере создается публикация для таблицы 'users'
CREATE PUBLICATION user_publication FOR TABLE users;

-- 2. На SLAVE-сервере создается подписка на эту публикацию
CREATE SUBSCRIPTION user_subscription
    CONNECTION 'host=master.db.example.com port=5432 user=replicator password=secret dbname=main_db'
    PUBLICATION user_publication;

После этого все изменения в таблице users на master-сервере будут автоматически копироваться на slave-сервер.