Изменения

Перейти к: навигация, поиск

Репликация

3980 байт добавлено, 19:36, 4 сентября 2022
м
rollbackEdits.php mass rollback
|definition =
'''Репликация''' — это поддержание одинаковых данных на нескольких узлах распределенной системы.}}
'''Типы репликации'''
* Синхронная -- требует введения распределенных транзакций и гарантирует одинаковое состояние реплик.
* Асинхронная -- допускает задержки репликации на репликах.
'''Схемы == Реализация репликации'''===== Типы репликации ===* С основной копией -- запросы на запись поступают в централизованное местоСинхронная — гарантирует одинаковое состояние реплик, а затем реплицируютсятребует введения распределенных транзакций.* Симметричная -- запросы на запись могут поступать в различные копииАсинхронная — допускает задержки репликации.
=== Репликация основной копией ===
[[Файл:Replication_Master.png|300px|thumb|right|Репликация с основной копией]]
Есть одна главная копия данных, запросы на запись поступают только туда, а затем реплицируются на все остальные копии. За согласованность изменений отвечает главная копия. Если изменения приводят к несогласованному состоянию, то транзакция откатывается. Запросы на чтение могут быть обработаны любой репликой.
Такая реализация эффективна, если количество записей сильно меньше количества запросов чтения.
== Реализация репликации =Симметричная репликация ===[[Файл:Replication_Symmetric.png|300px|thumb|right|Симметричная репликация]]Чтение и запись могут быть обработаны любой копией. При необходимости реплики могут работать автономно. Преимущества:* Запросы можно отправлять на географически ближайшую реплику
=== С основной копией ===Недостатки:* Необходимо обрабатывать случай записей с разных копий, которые конфликтуют при репликации.* При выходе из строя любой реплики, состояние системы не согласовано и данные потеряны.
=== Симметричная ===Таким образом, синхронная репликация сложна и малонадежна. В реальности распределенные базы данных решают эту проблему лучше.
=== Рассылка изменений ===
Информация обо всех сделанных изменения изменениях содержится в журнале транзакций. Репликация достигается за счёт рассылки протоколов транзакций.Это можно сделать двумя способами:
==== Репликация операторов ====
=== Вертикальное масштабирование ===
Большое количество чтений, малое количество записей. Схема репликации с одной копией. Примеры: 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]
 
[[Категория: Базы данных]]
1632
правки

Навигация