Типы репликации баз данных

Источник: «Types of Database Replication»
Репликация базы данных — это как создание копий важных документов, чтобы иметь резервные копии на случай, если с оригиналом что-то случится. Существуют различные способы создания таких копий, например, одна основная копия (master), которая обновляется, а затем создаются копии (slave) этой обновлённой версии. Другой способ — иметь несколько основных копий (master), обновляемых и совместно использующих эти обновления. Далее рассмотрим различные типы репликации баз данных.

Репликация Master-Slave

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

Репликация Master-Slave
Репликация Master-Slave

Как работает репликация Master-Slave

При репликации master-slave происходит обмен данными между master и slave базами данных. Процесс обмена данными включает следующие шаги:

  1. Операции записи: При выполнении операции записи (например, вставки, обновления или удаления) в базу данных master, master записывает изменения в свой лог транзакций.
  2. Процесс репликации: В базе данных master имеется процесс или поток репликации, считывающий лог транзакций и отправляющий изменения (или обновления) в базу (базы) данных slave.
  3. Сетевая коммуникация: Изменения передаются по сети от master к slave. Эта связь может быть синхронной или асинхронной, в зависимости от конфигурации.
  4. Применение изменений: Получив изменения, база данных slave применяет их к своей копии данных. У базы данных slave может быть процесс или поток репликации, управляющий этим процессом.
  5. Подтверждение: После применения изменений база данных slave отправляет базе данных master подтверждение, что изменения были получены и успешно применены.

Реальная аналогия репликации Master-Slave

Представьте библиотеку с двумя филиалами

Области применения репликации Master-Slave

Преимущества репликации Master-Slave

Проблемы репликации Master-Slave

Репликация Master-Master

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

Репликация Master-Master
Репликация Master-Master

Как работает репликация Master-Master

При репликации master-master обмен данными между узлами master происходит двунаправленно. Каждый master узел отвечает за приём операций записи и репликацию этих записей на другие master узлы системы. Процесс взаимодействия обычно включает следующие шаги:

  1. Операции записи: Когда операция записи (например, вставка, обновление или удаление) выполняется на одном master узле, этот узел записывает изменения в свой лог транзакций.
  2. Процесс репликации: На master узле есть процесс или поток репликации, считывающий лог транзакций и отправляющий изменения (или обновления) на другие master узлы.
  3. Сетевая связь: Изменения передаются по сети от одного master узла к другим master узлам. Эта связь может быть синхронной или асинхронной, в зависимости от конфигурации.
  4. Применение изменений: Получив изменения, каждый master узел применяет их к своей копии данных. Узлы также могут иметь процессы или потоки репликации, управляющие этим процессом.
  5. Разрешение конфликтов: В случаях, когда происходят конфликтующие записи (т. е. одни и те же данные одновременно изменяются на разных master узлах), необходимы механизмы разрешения конфликтов для обеспечения согласованности данных. Они могут включать выбор одной версии данных в качестве "победителя" или объединение конфликтующих изменений.
  6. Подтверждение: После применения изменений каждый master узел отправляет подтверждение обратно на исходный узел, чтобы подтвердить, что изменения были получены и успешно применены.

Реальная аналогия репликации Master-Master

Представьте двух высококвалифицированных авиадиспетчеров, управляющих воздушным движением в оживлённом воздушном пространстве.

Применение репликации Master-Master

Преимущества репликации Master-Master

Проблемы репликации Master-Master

Снапшот репликация

Снапшот репликация — метод, используемый в репликации баз данных для создания копии всей базы данных в определённый момент времени и последующей репликации этого снапшота на один или несколько целевых серверов. Обычно это делается для создания отчётов, резервных копий или распределённых баз данных.

Снапшот репликация
Снапшот репликация

Как работает снапшот репликация

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

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

  1. Первоначальный снапшот
    • Полная копия базы данных хранится у издателя (сервера исходной базы данных).
    • Этот снапшот включает все таблицы, данные и схему на определённый момент времени.
  2. Распределение
    • Снапшот хранится в базе данных распределения.
    • Эта база данных служит хранилищем снапшотов и последующих изменений.
  3. Процесс репликации
    • Отслеживаются изменения (вставки, обновления, удаления), внесённые в базу данных издателя.
    • Эти изменения сохраняются в базе данных распределения.
    • Распределительная база данных периодически копирует эти изменения в базы данных подписчиков (серверы назначения).
  4. Обновления подписчиков
    • Подписчики получают реплицированные изменения из базы данных распределения.
    • Они применяют эти изменения к своим собственным базам данных, чтобы поддерживать их синхронизацию с издателем.

Реальная аналогия снапшот репликации

Представьте, что вы сфотографировали беспорядок в комнате (базе данных) в определённое время.

Применения снапшот репликации

Преимущества снапшот репликации

Проблемы снапшот репликации

Транзакционная репликация

Транзакционная репликация — метод, позволяющий поддерживать синхронизацию нескольких копий базы данных в режиме реального времени.

Транзакционная репликация
Транзакционная репликация

Как работает транзакционная репликация

  1. Издатель и подписчик: Вы определяете таблицу или набор таблиц в базе данных издателя, которые необходимо реплицировать. Каждая база данных подписчиков получает обновления для этих конкретных таблиц.
  2. Отслеживание изменений: Издатель постоянно отслеживает выбранные таблицы на предмет любых изменений, таких как вставки, обновления или удаления.
  3. Зафиксированные транзакции: Каждое изменение группируется в транзакцию, что обеспечивает целостность и непротиворечивость данных.
  4. Распространитель отправляет обновления: Центральный сервер, называемый дистрибьютором, получает транзакции от издателя и готовит их к рассылке подписчикам.

Реальная аналогия транзакционной репликации

Представьте фондовый рынок с постоянно меняющимися ценами

Применение транзакционной репликации

Преимущества транзакционной репликации

Проблемы транзакционной репликации

Репликация слиянием

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

Это определение сжато и точно отражает суть репликации слиянием, выделяя две её основные характеристики:

Репликация слиянием
Репликация слиянием

Как работает репликация слиянием

  1. Издатель и подписчики: Как и в других методах, вы определяете таблицы в базе данных издателя для репликации. Подписчики также могут иметь доступ для чтения/записи к этим таблицам.
  2. Отслеживание изменений: И издатель, и подписчики отслеживают изменения, внесённые в таблицы.
  3. Возможны конфликты: Поскольку обе стороны могут изменять данные, могут возникнуть конфликты, когда в один и тот же элемент данных вносятся разные изменения.
  4. Синхронизация и разрешение конфликтов: Когда подписчик подключается к сети, он отправляет свои изменения издателю. Издатель объединяет эти изменения со своими собственными и изменениями других подписчиков. Если возникают конфликты, заранее определённые правила определяют, какое изменение имеет приоритет.
  5. Распространение обновлений: Разрешённые обновления распространяются среди всех подписчиков, обеспечивая всех самыми свежими данными.

Реальная аналогия репликации слиянием

Представьте команду, работающую над общим документом (базой данных) в Google Docs.

Применение репликации слиянием

Преимущества репликации слиянием

Проблемы репликации слиянием

Различия между репликацией Master-Slave и репликацией Master-Master

АспектРепликация Master-SlaveРепликация Master-Master
Поток данныхОдносторонний: от master к slaveДвунаправленный: между master
Операции записиТолько master может записывать данные; slave — данные доступны только для чтенияОба master могут записывать
Операции чтенияSlave могут выполнять операции чтенияОба master могут выполнять операции чтения
Согласованность данныхАсинхронно, потенциальная задержка в согласованностиМожет быть синхронной, возможна немедленная согласованность
Разрешение конфликтовПроще, меньше вероятность конфликтов из-за одностороннего потока.Более сложно, могут возникать конфликты, требующие разрешения

Различия между Снапшот репликацией и Транзакционной репликацией

АспектСнапшот репликацияТранзакционная репликация
Захват данныхСоздаёт моментальный снапшот всей базы данныхЗахват и репликация отдельных транзакций в режиме реального времени
Периодичность обновленийОбычно используется для нечастых обновленийИспользуется для более частых обновлений, обеспечивая репликацию практически в режиме реального времени
Размер передаваемых данныхПередача всего набора данных во время каждого цикла репликацииПередача только изменений, сделанных с момента последнего цикла репликации, что сокращает передачу данных
СогласованностьОбеспечивает последовательный снапшот базы данных в определённый момент времениПоддерживает согласованность между издателем и подписчиками практически в режиме реального времени
Варианты использованияПодходит для создания отчётов, резервных копий или распространения копий базы данных только для чтенияИспользуется в сценариях, где требуется синхронизация данных практически в режиме реального времени

Заключение

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

Дополнительные материалы

Предыдущая Статья

Как настроить MySQL репликацию Master-Slave

Следующая Статья

Синтаксис относительного цвета — примеры использования