Открыть сервис

Асинхронная репликация

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

Принцип работы

Основной принцип асинхронной репликации заключается в разделении операции записи на два этапа: немедленная фиксация данных на источнике и отложенная передача изменений на приемник. Механизм реализуется через очередь транзакций или журнал изменений (лог).

Процесс передачи данных

  1. Фиксация на источнике: Приложение выполняет запись на сервер-источник. Данные немедленно сохраняются в локальном хранилище и журнале транзакций. Источник отправляет клиенту подтверждение об успешной записи.
  2. Формирование очереди: Все изменения, произошедшие с момента последней синхронизации, накапливаются в специальном буфере или журнале на источнике. Каждая запись получает уникальный идентификатор (например, номер последовательности — LSN в базах данных).
  3. Передача на приемник: Специализированный процесс (репликатор, сборщик мусора или фоновый поток) периодически или по триггеру отправляет накопленные изменения на сервер-приемник. Передача может происходить пакетами, в порядке их возникновения.
  4. Применение на приемнике: Приемник получает данные и применяет их к своей локальной копии базы данных или файловой системы. Порядок применения строго соблюдается, чтобы гарантировать консистентность данных на приемнике.
  5. Задержка (лаг): Между моментом записи на источнике и моментом применения на приемнике существует временной промежуток — лаг репликации. Величина лага зависит от нагрузки, пропускной способности сети и производительности приемника.

Отличие от синхронной репликации

Главное отличие заключается в моменте подтверждения записи клиенту. При синхронной репликации клиент получает подтверждение только после того, как данные записаны на всех узлах (или на кворуме узлов). Это гарантирует нулевую потерю данных (RPO=0), но снижает производительность и увеличивает время отклика. При асинхронной репликации клиент получает подтверждение сразу после записи на источник, что минимизирует задержки, но создает окно возможной потери данных.

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

Преимущества

Недостатки

Виды асинхронной репликации

По способу передачи данных

По топологии

Применение

Асинхронная репликация широко используется в различных областях информационных технологий:

Примеры реализации

PostgreSQL (физическая репликация)

В PostgreSQL асинхронная репликация реализована через потоковую передачу журнала предзаписи (WAL). Мастер отправляет WAL-сегменты репликам. При сбое мастера реплика может быть повышена до мастера (операция pg_ctl promote). Лаг репликации измеряется в байтах или секундах.

MySQL (репликация на основе бинарного лога)

MySQL использует бинарный лог (binlog) для асинхронной репликации. Мастер записывает все изменения в binlog, а на слейве работает поток ввода/вывода (I/O thread), который копирует эти записи в свой relay log. Затем SQL thread на слейве применяет изменения к локальной базе данных.

MongoDB (репликация в наборах реплик)

MongoDB использует асинхронную репликацию в рамках набора реплик. Первичный узел (primary) принимает все записи, а вторичные узлы (secondary) асинхронно копируют данные из oplog (журнала операций) первичного узла. В случае сбоя первичного узла вторичные узлы проводят выборы нового первичного узла.

Критика и ограничения

Основная критика асинхронной репликации связана с риском потери данных. Для приложений, где целостность данных критична (финансовые транзакции, системы бронирования, медицинские записи), асинхронная репликация часто считается неприемлемой без дополнительных механизмов (например, двухфазного подтверждения или синхронной репликации на кворум узлов). Однако для большинства веб-приложений, социальных сетей, систем аналитики и резервного копирования асинхронная репликация является оптимальным выбором, обеспечивающим баланс между производительностью и надежностью.

Источники

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →