Репликация с несколькими хозяевами
![]() | Эта статья включает список общих ссылок , но в ней отсутствуют достаточные соответствующие встроенные цитаты . ( Май 2012 г. ) |
Репликация с несколькими хозяевами — это метод репликации базы данных , который позволяет хранить данные группой компьютеров и обновлять их любым членом группы. Все участники реагируют на запросы данных клиентов. Система репликации с несколькими хозяевами отвечает за распространение изменений данных, внесенных каждым членом, на остальную часть группы и разрешение любых конфликтов, которые могут возникнуть между одновременными изменениями, внесенными разными участниками.
Репликацию с несколькими хозяевами можно противопоставить репликации с первичной репликой , в которой один член группы назначается «главным» для данного фрагмента данных и является единственным узлом, которому разрешено изменять этот элемент данных. Другие участники, желающие изменить элемент данных, должны сначала связаться с главным узлом. Разрешение только одного мастера упрощает достижение согласованности среди членов группы, но менее гибко, чем репликация с несколькими хозяевами.
Репликацию с несколькими хозяевами также можно противопоставить отказоустойчивому кластеру , где серверы пассивных реплик реплицируют основные данные, чтобы подготовиться к перехвату в случае, если главный сервер перестанет функционировать. Мастер — единственный сервер, активный для взаимодействия с клиентом.
Часто обмен данными и репликация в системах с несколькими мастерами осуществляются с помощью определенного типа алгоритма консенсуса , но также могут быть реализованы с помощью пользовательских или собственных алгоритмов, специфичных для программного обеспечения.
Основными целями репликации с несколькими хозяевами являются повышение доступности и сокращение времени ответа сервера. [1]
Преимущества
[ редактировать ]- Доступность : в случае сбоя одного мастера другие мастера продолжают обновлять базу данных .
- Распределенный доступ: Мастера могут быть расположены на нескольких физических площадках, т.е. распределены по сети.
Недостатки
[ редактировать ]- Согласованность . Большинство систем репликации с несколькими хозяевами являются лишь слабо согласованными, т. е. ленивыми и асинхронными, что нарушает ACID . свойства
- Производительность . Системы репликации Eager сложны и увеличивают задержку связи .
- Целостность . Такие проблемы, как разрешение конфликтов, могут стать неразрешимыми по мере увеличения количества задействованных узлов и увеличения задержки.
Реализации
[ редактировать ]Службы каталогов
[ редактировать ]Многие серверы каталогов основаны на облегченном протоколе доступа к каталогам (LDAP) и реализуют репликацию с несколькими хозяевами.
Активный каталог
[ редактировать ]Одной из наиболее распространенных реализаций репликации с несколькими хозяевами на серверах каталогов является Microsoft от Active Directory . В Active Directory объекты, обновляемые на одном контроллере домена, затем реплицируются на другие контроллеры домена посредством репликации с несколькими хозяевами. Не обязательно, чтобы все контроллеры домена реплицировали друг друга, поскольку это может привести к чрезмерному сетевому трафику в крупных развертываниях Active Directory. Вместо этого контроллеры домена имеют сложную схему обновления, которая гарантирует своевременное обновление всех серверов без чрезмерного трафика репликации. Однако некоторые потребности Active Directory лучше удовлетворяются с помощью гибкой операции с одним главным устройством .
Каталог CA
[ редактировать ]CA Directory поддерживает репликацию с несколькими хозяевами.
ОпенДС/ОпенДЖ
[ редактировать ]В OpenDS (и его преемнике OpenDJ ) реализована поддержка нескольких мастеров, начиная с версии 1.0. Репликация с несколькими хозяевами OpenDS/OpenDJ является асинхронной, она использует журнал с механизмом публикации-подписки, который позволяет масштабироваться на большое количество узлов. Репликация OpenDS/OpenDJ разрешает конфликты на уровне записи и атрибута. Репликация OpenDS/OpenDJ может использоваться в глобальной сети .
OpenLDAP
[ редактировать ]OpenLDAP , широко используемый сервер LDAP с открытым исходным кодом , реализует репликацию с несколькими хозяевами, начиная с версии 2.4 (октябрь 2007 г.) [1] .
Системы управления базами данных
[ редактировать ]Амазонка Аврора
[ редактировать ]Amazon Aurora состоит из узлов записи, которые реплицируют записи повторного выполнения, и 6 узлов хранения. Узел записи отправляет изменение на каждый узел хранения, каждый из которых проверяет наличие конфликтов, а затем сообщает о подтверждении или отклонении изменения. [2]
Apache CouchDB
[ редактировать ]Apache CouchDB использует простую систему репликации с несколькими хозяевами на основе HTTP, созданную на основе использования хранилища данных только для добавления и использования многоверсионного управления параллелизмом (MVCC) .
Каждый документ содержит идентификатор ревизии, поэтому каждая запись хранит временную шкалу развития всех предыдущих идентификаторов ревизий, ведущих к ней самой, что обеспечивает основу системы MVCC CouchDB . Кроме того, он сохраняет индекс последовательности для всей базы данных. «Процесс репликации копирует только последнюю версию документа, поэтому все предыдущие версии, которые были только в исходной базе данных, не копируются в целевую базу данных». [3]
Репликатор CouchDB действует как простой HTTP-клиент, действующий как на источник и целевая база данных. Он сравнивает текущие идентификаторы последовательностей для базы данных, вычисляет различия редакций и вносит необходимые изменения в базу данных. цель, основанная на том, что она нашла в истории исходная база данных. Двунаправленная репликация — это результат простого выполнения еще одной репликации с источник и целевые значения поменялись местами.
АрангоДБ
[ редактировать ]ArangoDB — это собственная многомодельная система баз данных, использующая репликацию с несколькими хозяевами. Кластеры в ArangoDB используют модель CP «главный/главный» без единой точки отказа. Когда кластер сталкивается с сетевым разделом, ArangoDB предпочитает поддерживать внутреннюю согласованность, а не доступность. Клиенты видят базу данных одинаково, независимо от того, к какому узлу они подключаются. И кластер продолжает обслуживать запросы даже в случае сбоя одной машины. [4]
Cloudant
[ редактировать ]Cloudant , система распределенных баз данных, использует в основном тот же HTTP API, что и Apache CouchDB , и предоставляет ту же возможность репликации с использованием Multiversion Concurrency Control (MVCC) . Базы данных Cloudant могут реплицироваться между собой, но внутри узлов кластеров Cloudant используется репликация с несколькими хозяевами, чтобы оставаться синхронизированными друг с другом и обеспечивать высокую доступность для потребителей API.
Кластер eXtremeDB
[ редактировать ]eXtremeDB Cluster — это подсистема кластеризации для семейства продуктов встроенных баз данных McObject eXtremeDB . Он поддерживает согласованность базы данных на нескольких аппаратных узлах путем синхронной репликации транзакций (двухфазная фиксация). Важной характеристикой eXtremeDB Cluster является репликация транзакций , в отличие от схем репликации на основе файлов журналов, операторов SQL или других схем репликации, которые могут или не могут гарантировать успех или неудачу всех транзакций. Соответственно, eXtremeDB Cluster — это система, совместимая с ACID (а не с BASE или конечной согласованностью ); запрос, выполненный на любом узле кластера, вернет тот же результат, как если бы он был выполнен на любом другом узле кластера.
Оракул
[ редактировать ]баз данных Кластеры реализуют репликацию с несколькими хозяевами, используя один из двух методов. Асинхронная репликация с несколькими хозяевами фиксирует изменения данных в очереди отложенных транзакций , которая периодически обрабатывается во всех базах данных в кластере. Синхронная репликация с несколькими хозяевами использует функцию двухфазной фиксации Oracle, чтобы гарантировать, что все базы данных в кластере имеют согласованный набор данных .
Microsoft SQL
[ редактировать ]Microsoft SQL обеспечивает репликацию с несколькими хозяевами посредством одноранговой репликации. Он обеспечивает масштабируемое решение и высокую доступность за счет хранения копий данных на нескольких узлах. Одноранговая репликация, построенная на основе репликации транзакций, обеспечивает распространение транзакционно-согласованных изменений практически в реальном времени. [5]
MySQL/МарияДБ
[ редактировать ]На базовом уровне можно реализовать схему репликации с несколькими хозяевами, начиная с MySQL версии 3.23, с циклической репликацией. Помимо этого, MariaDB и MySQL поставляются с некоторой поддержкой репликации, каждая из которых имеет свои нюансы.
Что касается прямой поддержки, мы имеем:
MariaDB: изначально поддерживает репликацию с несколькими хозяевами, начиная с версии 10.0, но разрешение конфликтов не поддерживается, поэтому каждый мастер должен содержать разные базы данных. В MySQL это называется multi-source, доступное начиная с версии 5.7.6 .
MySQL: MySQL Group Replication, плагин для виртуального синхронного мультимастера с обработкой конфликтов и распределенным восстановлением, был выпущен в версии 5.7.17 .
Кластерные проекты:
MySQL Cluster поддерживает обнаружение и разрешение конфликтов между несколькими мастерами, начиная с версии 6.3, что обеспечивает настоящую возможность работы с несколькими мастерами для MySQL Server.
Существует также внешний проект Galera Cluster , созданный codership. Архивировано 27 сентября 2011 г. на Wayback Machine , который обеспечивает настоящую возможность работы с несколькими мастерами на основе ответвления механизма хранения InnoDB и пользовательских плагинов репликации. Репликация синхронная, поэтому конфликт невозможен.
Percona XtraDB Cluster также представляет собой комбинацию библиотеки репликации Galera и MySQL, поддерживающей несколько мастеров.
PostgreSQL
[ редактировать ]Существуют различные варианты синхронной репликации с несколькими хозяевами. Примерами являются Postgres-XL , доступный по публичной лицензии Mozilla, и PostgresXC (теперь известный как Postgres-X2 ), который доступен по той же лицензии, что и сам PostgreSQL. Обратите внимание, что проект PgCluster ( архивировано 5 июля 2017 г. на Wayback Machine ) был закрыт в 2007 г.
Документация по репликации для PostgreSQL [6] классифицирует различные доступные типы репликации. Существуют различные варианты распределенной мультимастерной, включая Bucardo , Rubyrep и BDR Bi-Directional Replication .
PostgreSQL БДР
[ редактировать ]BDR нацелен на возможное включение в ядро PostgreSQL и был протестирован как демонстрирующий значительно повышенную производительность. [7] по сравнению с предыдущими вариантами. BDR включает репликацию записи данных (DML), а также изменения в определении данных (DDL) и глобальных последовательностях. Узлы BDR можно обновить онлайн, начиная с версии 0.9. Компания 2ndQuadrant непрерывно разрабатывает BDR с 2012 года, а система используется в производстве с 2014 года. Последняя версия BDR 3.6 обеспечивает обнаружение конфликтов на уровне столбцов, CRDT, быструю репликацию, согласованность запросов на нескольких узлах и многие другие функции.
Энгр
[ редактировать ]В Ingres Replicator объекты, обновляемые на одном сервере Ingres, затем можно реплицировать на другие серверы, локальные или удаленные, посредством репликации с несколькими хозяевами. В случае сбоя одного сервера клиентские соединения могут быть перенаправлены на другой сервер. Не требуется, чтобы все серверы Ingres в среде реплицировались друг с другом, поскольку это может привести к чрезмерному сетевому трафику в крупных реализациях. Вместо этого Ingres Replicator позволяет реплицировать соответствующие данные на соответствующие серверы без чрезмерного трафика репликации. Это означает, что некоторые серверы в среде могут служить кандидатами на аварийное переключение, в то время как другие серверы могут соответствовать другим требованиям, например, управлять подмножеством столбцов или таблиц для решения отдела, подмножеством строк для географического региона или односторонней репликацией для отчетности. сервер. В случае сбоя источника, цели или сети целостность данных обеспечивается с помощью этого протокола двухфазной фиксации , гарантируя, что либо вся транзакция реплицируется, либо ничего из нее не реплицируется. Кроме того, Ingres Replicator может работать с СУБД различных производителей. [ который? ] чтобы соединить их.
См. также
[ редактировать ]- Гибкая работа с одним мастером
- Активный каталог
- Распределенная система управления базами данных
- Перенос DNS-зоны
- Оптимистическая репликация
Ссылки
[ редактировать ]- ^ Postgres-XC. Архивировано 1 июля 2012 г. на Wayback Machine в разделе « Что такое Postgres-XC?». :
Масштабируемость записи означает, что Postgres-XC может быть настроен с любым количеством серверов баз данных и обрабатывать гораздо больше операций записи (обновление операторов SQL) по сравнению с тем, что не может сделать один сервер базы данных.
- ^ «Создавайте высокодоступные приложения MySQL с помощью Amazon Aurora Multi-Master» . 8 августа 2019 г.
- ^ «Репликация Apache CouchDB» . Apache Foundation — проект Apache CouchDB.
- ^ «Кластерная архитектура ArangoDB» . ArangoDB — Архитектура ArangoDB.
- ^ Одноранговая репликация транзакций
- ^ Сравнение различных решений репликации для PostgreSQL Как указано в документации PostgreSQL 9. Проверено 8 мая 2012 г.
- ^ Производительность BDR Петр Елинек, 2-й квадрант. Проверено 10 июля 2014 г.
Внешние ссылки
[ редактировать ]- Модель репликации Active Directory
- Термины и определения репликации базы данных
- SymmetricDS — это независимое от базы данных программное обеспечение для синхронизации данных . Он использует веб-технологии и технологии баз данных для репликации таблиц между реляционными базами данных почти в реальном времени. Программное обеспечение было разработано для масштабирования для большого количества баз данных, работы с соединениями с низкой пропускной способностью и выдерживания периодов сбоев в сети. Он поддерживает MySQL , Oracle , SQL Server , PostgreSQL , IBM Db2 , Firebird , Interbase , HSQLDB , H2 , Apache Derby , Informix , Greenplum , SQLite , Sybase ASE и Sybase ASA . Лицензия как с открытым исходным кодом ( GPL ), так и под коммерческой лицензией.
- Daffodil Replicator — это инструмент Java для синхронизации данных , миграции данных и резервного копирования данных между различными серверами баз данных. Daffodil Replicator работает через стандартный драйвер JDBC и поддерживает репликацию в гетерогенных базах данных. В настоящее время он поддерживает следующие базы данных: Microsoft SQL Server , Oracle , база данных Daffodil, IBM Db2 , Apache Derby , MySQL и PostgreSQL . Daffodil Replicator доступен как в корпоративной (коммерческой), так и в версии с открытым исходным кодом ( под лицензией GPL ).
- Проект Open Directory DMOZ — страница репликации базы данных