Репликация — различия между версиями

Материал из Викиконспекты
Перейти к: навигация, поиск
(Структура страницы)
 
м (rollbackEdits.php mass rollback)
 
(не показаны 4 промежуточные версии 4 участников)
Строка 2: Строка 2:
 
|definition =
 
|definition =
 
'''Репликация''' — это поддержание одинаковых данных на нескольких узлах распределенной системы.}}
 
'''Репликация''' — это поддержание одинаковых данных на нескольких узлах распределенной системы.}}
'''Типы репликации'''
 
* Синхронная -- требует введения распределенных транзакций и гарантирует одинаковое состояние реплик.
 
* Асинхронная -- допускает задержки репликации на репликах.
 
  
'''Схемы репликации'''
+
== Реализация репликации ==
* С основной копией -- запросы на запись поступают в централизованное место, а затем реплицируются
+
=== Типы репликации ===
* Симметричная -- запросы на запись могут поступать в различные копии
+
* Синхронная — гарантирует одинаковое состояние реплик, требует введения распределенных транзакций.
 +
* Асинхронная — допускает задержки репликации.
  
 +
=== Репликация основной копией ===
 +
[[Файл:Replication_Master.png|300px|thumb|right|Репликация с основной копией]]
 +
Есть одна главная копия данных, запросы на запись поступают только туда, а затем реплицируются на все остальные копии. За согласованность изменений отвечает главная копия. Если изменения приводят к несогласованному состоянию, то транзакция откатывается. Запросы на чтение могут быть обработаны любой репликой.
 +
Такая реализация эффективна, если количество записей сильно меньше количества запросов чтения.
  
== Реализация репликации ==
+
=== Симметричная репликация ===
 +
[[Файл:Replication_Symmetric.png|300px|thumb|right|Симметричная репликация]]
 +
Чтение и запись могут быть обработаны любой копией. При необходимости реплики могут работать автономно.
 +
 
 +
Преимущества:
 +
* Запросы можно отправлять на географически ближайшую реплику
  
=== С основной копией ===
+
Недостатки:
 +
* Необходимо обрабатывать случай записей с разных копий, которые конфликтуют при репликации.
 +
* При выходе из строя любой реплики, состояние системы не согласовано и данные потеряны.
  
=== Симметричная ===
+
Таким образом, синхронная репликация сложна и малонадежна. В реальности распределенные базы данных решают эту проблему лучше.
  
 
=== Рассылка изменений ===
 
=== Рассылка изменений ===
Информация обо всех сделанных изменения содержится в журнале транзакций. Репликация достигается за счёт рассылки протоколов транзакций.
+
Информация обо всех сделанных изменениях содержится в журнале транзакций. Репликация достигается за счёт рассылки протоколов транзакций. Это можно сделать двумя способами:
  
 
==== Репликация операторов ====
 
==== Репликация операторов ====
Строка 34: Строка 43:
  
 
=== Вертикальное масштабирование ===
 
=== Вертикальное масштабирование ===
 +
Большое количество чтений, малое количество записей. Схема репликации с одной копией. Примеры: web-сервера, erp-системы.
  
 
=== Горизонтальное масштабирование ===
 
=== Горизонтальное масштабирование ===
 +
Большое количество локальный операций (например, по критерию географической распределенности). Реплика отвечает за свой набор данных, т.е. по запросу всегда можно определить нужную реплику. Применение: географическая распределенность, независимость по данным, непостоянная связь.
  
 
=== Повышение доступности ===
 
=== Повышение доступности ===
 +
Ассиметричная схема репликации позволяет менять основную реплику не останавливая работу системы.
  
 
=== Резервное копирование ===
 
=== Резервное копирование ===
 +
Ассиметричная схема.
 +
 +
* Для получения резервной копии добавим специальную реплику, которая будет синхронизирована с основной.
 +
* В момент взятия резервной копии отключаем синхронизацию.
 +
* Чтобы сделать следующую резервную копию, синхронизация снова включается.
 +
* Реплика получает все изменения, сделанные с момента отключения.
  
 
=== Преобразование данных ===
 
=== Преобразование данных ===
 +
Ассиметричная схема репликации позволяет добавлять специальные реплики, которые занимаются обработкой данных. Периодически синхронизуясь, такая реплика преобразовывает данные, например: изменение формата хранения, консолидация данных, унификация данных.
 +
 +
== Литература ==
 +
* Дейт К. Введение в системы баз данных (глава 21)
 +
* [https://www.postgresql.org/docs/current/high-availability.html PostgreSQL: High Availability, Load Balancing, and Replication]
 +
* [https://dev.mysql.com/doc/refman/8.0/en/replication.html MySQL: Replication]
 +
 +
[[Категория: Базы данных]]

Текущая версия на 19:36, 4 сентября 2022

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


Реализация репликации

Типы репликации

  • Синхронная — гарантирует одинаковое состояние реплик, требует введения распределенных транзакций.
  • Асинхронная — допускает задержки репликации.

Репликация основной копией

Репликация с основной копией

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

Симметричная репликация

Симметричная репликация

Чтение и запись могут быть обработаны любой копией. При необходимости реплики могут работать автономно.

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

  • Запросы можно отправлять на географически ближайшую реплику

Недостатки:

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

Таким образом, синхронная репликация сложна и малонадежна. В реальности распределенные базы данных решают эту проблему лучше.

Рассылка изменений

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

Репликация операторов

  • На реплике выполняются те же операторы
  • Пересылается малый объем данных
  • Операторы должны быть детерминированны
  • Необходимо учитывать взаимный порядок выполнения транзакций.

Репликация записей

  • Пересылается информация об изменении записей
  • Результат детерминирован
  • Вынужденно пересылается большое количество записей

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

Вертикальное масштабирование

Большое количество чтений, малое количество записей. Схема репликации с одной копией. Примеры: web-сервера, erp-системы.

Горизонтальное масштабирование

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

Повышение доступности

Ассиметричная схема репликации позволяет менять основную реплику не останавливая работу системы.

Резервное копирование

Ассиметричная схема.

  • Для получения резервной копии добавим специальную реплику, которая будет синхронизирована с основной.
  • В момент взятия резервной копии отключаем синхронизацию.
  • Чтобы сделать следующую резервную копию, синхронизация снова включается.
  • Реплика получает все изменения, сделанные с момента отключения.

Преобразование данных

Ассиметричная схема репликации позволяет добавлять специальные реплики, которые занимаются обработкой данных. Периодически синхронизуясь, такая реплика преобразовывает данные, например: изменение формата хранения, консолидация данных, унификация данных.

Литература