Replikacja z wieloma wzorcami — Multi-master replication

Replikacja z wieloma wzorcami to metoda replikacji bazy danych, która umożliwia przechowywanie danych przez grupę komputerów i aktualizowanie ich przez dowolnego członka grupy. Wszyscy członkowie reagują na zapytania dotyczące danych klientów. System replikacji z wieloma wzorcami jest odpowiedzialny za propagowanie modyfikacji danych dokonanych przez każdego członka do reszty grupy i rozwiązywanie wszelkich konfliktów, które mogą powstać między równoczesnymi zmianami wprowadzanymi przez różnych członków.

Replikację z wieloma wzorcami można przeciwstawić replikacji podstawowej , w której pojedynczy członek grupy jest wyznaczony jako „główny” dla danej części danych i jest jedynym węzłem, który może modyfikować ten element danych. Inni członkowie, którzy chcą zmodyfikować element danych, muszą najpierw skontaktować się z węzłem głównym. Dopuszczenie tylko jednego wzorca ułatwia osiągnięcie spójności między członkami grupy, ale jest mniej elastyczne niż replikacja z wieloma wzorcami.

Replikację z wieloma wzorcami można również porównać z klastrami pracy awaryjnej, w których pasywne serwery replik replikują dane wzorcowe w celu przygotowania się do przejęcia w przypadku, gdy wzorzec przestanie działać. Master jest jedynym serwerem aktywnym dla interakcji z klientem.

Często komunikacja i replikacja w systemach Multi-master są obsługiwane za pomocą algorytmu konsensusu , ale mogą być również realizowane za pomocą niestandardowych lub zastrzeżonych algorytmów specyficznych dla oprogramowania.

Podstawowymi celami replikacji z wieloma wzorcami są zwiększona dostępność i szybszy czas odpowiedzi serwera.

Zalety

  • Ułatwienia dostępu : jeśli jeden master ulegnie awarii, inne mastery kontynuują aktualizację bazy danych .
  • Dostęp rozproszony: Mastery mogą znajdować się w kilku fizycznych lokalizacjach, tj. rozproszonych w sieci.

Niedogodności

  • Spójność : większość systemów replikacji z wieloma wzorcami jest tylko luźno spójna, tj. leniwa i asynchroniczna, naruszając właściwości ACID .
  • Wydajność : Systemy replikacji Chętnych są złożone i zwiększają opóźnienia w komunikacji .
  • Integralność : problemy, takie jak rozwiązywanie konfliktów, mogą stać się trudne do rozwiązania, gdy liczba zaangażowanych węzłów rośnie i wzrasta opóźnienie.

Realizacje

Usługi katalogowe

Wiele serwerów katalogowych jest opartych na protokole LDAP ( Lightweight Directory Access Protocol ) i implementuje replikację z wieloma wzorcami.

Active Directory

Jednym z bardziej rozpowszechnionych multi-master implementacji replikacji serwerów katalogowych jest Microsoft „s Active Directory . W usłudze Active Directory obiekty aktualizowane na jednym kontrolerze domeny są następnie replikowane na inne kontrolery domeny za pośrednictwem replikacji na wielu wzorcach. Replikacja między wszystkimi kontrolerami domeny nie jest wymagana, ponieważ spowodowałoby to nadmierny ruch sieciowy w dużych wdrożeniach usługi Active Directory. Zamiast tego kontrolery domeny mają złożony wzorzec aktualizacji, który zapewnia, że ​​wszystkie serwery są aktualizowane w odpowiednim czasie bez nadmiernego ruchu związanego z replikacją. Niektóre potrzeby Active Directory są jednak lepiej zaspokajane przez elastyczną operację pojedynczego wzorca .

Katalog CA

Katalog CA obsługuje replikację z wieloma wzorcami.

OpenDS/OpenDJ

OpenDS (i jego następca produkt OpenDJ ) zaimplementował multi-master od wersji 1.0. Replikacja multi-master OpenDS/OpenDJ jest asynchroniczna, korzysta z dziennika z mechanizmem publikowania-subskrypcji, który umożliwia skalowanie do dużej liczby węzłów. Replikacja OpenDS/OpenDJ rozwiązuje konflikty na poziomie wpisu i atrybutu. Replikacja OpenDS/OpenDJ może być używana w sieci rozległej .

OtwórzLDAP

OpenLDAP , szeroko stosowany serwer LDAP o otwartym kodzie źródłowym , implementuje replikację z wieloma wzorcami od wersji 2.4 (październik 2007) [1] .

systemy zarządzania bazą danych

Amazonka zorza polarna

Amazon Aurora składa się z węzłów zapisujących, które replikują rekordy ponownego wykonania, oraz 6 węzłów magazynowania. Węzeł zapisujący wysyła zmianę do każdego węzła magazynowania, z których każdy sprawdza konflikty, a następnie zgłasza potwierdzenie lub odrzucenie zmiany.

Apache CouchDB

Apache CouchDB korzysta z prostego, opartego na protokole HTTP wielowzorcowego systemu replikacji, zbudowanego z wykorzystaniem magazynu danych tylko do dołączania i funkcji Multiversion Concurrency Control (MVCC) .

Każdy dokument zawiera identyfikator wersji, więc każdy rekord przechowuje ewolucyjną oś czasu wszystkich poprzednich identyfikatorów wersji prowadzących do samego siebie — co stanowi podstawę systemu MVCC CouchDB . Dodatkowo przechowuje indeks według sekwencji dla całej bazy danych. „Proces replikacji kopiuje tylko ostatnią wersję dokumentu, więc wszystkie poprzednie wersje, które znajdowały się tylko w źródłowej bazie danych, nie są kopiowane do docelowej bazy danych”.

Replikator CouchDB działa jako prosty klient HTTP działający zarówno na źródłowej, jak i docelowej bazie danych. Porównuje bieżące identyfikatory sekwencji dla bazy danych, oblicza różnice wersji i wprowadza niezbędne zmiany w celu na podstawie tego, co znalazł w historii źródłowej bazy danych. Replikacja dwukierunkowa jest wynikiem wykonania kolejnej replikacji z zamienionymi wartościami źródłowymi i docelowymi .

ArangoDB

ArangoDB to natywny wielomodelowy system baz danych wykorzystujący replikację wielu wzorców. Klastry w ArangoDB używają modelu CP master/master bez pojedynczego punktu awarii. Gdy klaster napotka partycję sieciową, ArangoDB woli zachować wewnętrzną spójność nad dostępnością. Klienci mają taki sam widok bazy danych, niezależnie od tego, z którym węzłem się łączą. Ponadto klaster kontynuuje obsługę żądań nawet w przypadku awarii jednej maszyny.

Chmury

Cloudant , system rozproszonej bazy danych, wykorzystuje w dużej mierze ten sam interfejs API HTTP co Apache CouchDB , i udostępnia tę samą zdolność do replikacji przy użyciu Multiversion Concurrency Control (MVCC) . Bazy danych Cloudant mogą replikować się między sobą, ale wewnętrznie węzły w klastrach Cloudant wykorzystują replikację z wieloma wzorcami, aby zachować synchronizację i zapewnić wysoką dostępność użytkownikom interfejsu API.

Klaster eXtremeDB

eXtremeDB Cluster to podsystem klastrowy dla rodziny wbudowanych produktów bazodanowych McObject eXtremeDB . Utrzymuje spójność bazy danych na wielu węzłach sprzętowych, replikując transakcje w sposób synchroniczny (zatwierdzanie dwufazowe). Ważną cechą klastra eXtremeDB jest replikacja transakcji , w przeciwieństwie do schematów replikacji opartych na plikach dziennika, instrukcjach SQL lub innych schematach replikacji, które mogą, ale nie muszą gwarantować powodzenia lub niepowodzenia całych transakcji. W związku z tym klaster eXtremeDB jest systemem zgodnym z ACID (nie BASE lub ostateczną spójnością ); zapytanie wykonane w dowolnym węźle klastra zwróci taki sam wynik, jak w przypadku dowolnego innego węzła klastra.

Wyrocznia

Klastry baz danych implementują replikację z wieloma wzorcami przy użyciu jednej z dwóch metod. Asynchroniczna replikacja z wieloma wzorcami zatwierdza zmiany danych w odroczonej kolejce transakcji, która jest okresowo przetwarzana we wszystkich bazach danych w klastrze. Synchroniczna replikacja z wieloma wzorcami korzysta z funkcji zatwierdzania dwufazowego Oracle, aby zapewnić, że wszystkie bazy danych w klastrze mają spójny zestaw danych .

Microsoft SQL

Microsoft SQL zapewnia replikację wielu wzorców za pośrednictwem replikacji równorzędnej. Zapewnia skalowalne i wysokiej dostępności rozwiązanie dzięki utrzymywaniu kopii danych w wielu węzłach. o wysokiej dostępności. Zbudowana na fundamencie replikacji transakcyjnej, replikacja peer-to-peer propaguje spójne transakcyjnie zmiany w czasie zbliżonym do rzeczywistego.

MySQL / MariaDB

Na poziomie podstawowym możliwe jest osiągnięcie schematu replikacji z wieloma wzorcami począwszy od wersji MySQL 3.23 z replikacją cykliczną. Poza tym MariaDB i MySQL są dostarczane z pewnym wsparciem replikacji, z których każdy ma inne niuanse.

W zakresie wsparcia bezpośredniego posiadamy:

MariaDB: natywnie obsługuje replikację z wieloma wzorcami od wersji 10.0, ale rozwiązywanie konfliktów nie jest obsługiwane, więc każdy wzorzec musi zawierać różne bazy danych. W MySQL jest to nazwane multi-source dostępne od wersji 5.7.6 .

MySQL: MySQL Group Replication, wtyczka do wirtualnego synchronicznego multi-mastera z obsługą konfliktów i rozproszonym odzyskiwaniem, została wydana w wersji 5.7.17 .

Projekty klastrowe:

MySQL Cluster obsługuje wykrywanie konfliktów i rozwiązywanie konfliktów między wieloma masterami od wersji 6.3, co zapewnia prawdziwą możliwość obsługi wielu masterów dla MySQL Server.

Istnieje również zewnętrzny projekt Galera Cluster stworzony przez codership , który zapewnia prawdziwe możliwości multi-master, oparte na rozwidleniu silnika pamięci masowej InnoDB i niestandardowych wtyczkach replikacji. Replikacja jest synchroniczna, więc konflikt nie jest możliwy.

Percona xtradb grupa jest też kombinacja Galera biblioteki replikacji MySQL różnorodnego matrycy.

PostgreSQL

Istnieją różne opcje synchronicznej replikacji z wieloma wzorcami. Przykładami są Postgres-XL, który jest dostępny na licencji Mozilla Public License, oraz PostgresXC (obecnie znany jako Postgres-X2 ), który jest dostępny na tej samej licencji, co sam PostgreSQL. Zauważ, że projekt PgCluster ( Archived 2017-07-05 at the Wayback Machine ) został porzucony w 2007 roku.

Dokumentacja replikacji dla PostgreSQL kategoryzuje różne dostępne typy replikacji. Istnieją różne opcje dla rozproszonych multi- masterów , w tym Bucardo , rubyrep i BDR Bi-Directional Replication .

PostgreSQL BDR

BDR ma na celu ewentualne włączenie do rdzenia PostgreSQL i został przetestowany jako wykazujący znacznie większą wydajność w porównaniu z wcześniejszymi opcjami. BDR obejmuje replikację zapisów danych (DML), a także zmiany definicji danych (DDL) i sekwencje globalne. Węzły BDR można aktualizować online od wersji 0.9. 2ndQuadrant rozwija BDR nieprzerwanie od 2012 roku, a system jest używany w produkcji od 2014 roku. Najnowsza wersja BDR 3.6 zapewnia wykrywanie konfliktów na poziomie kolumn, CRDT, gorącą replikację, spójność zapytań wielowęzłowych i wiele innych funkcji.

Ingres

W programie Ingres Replicator obiekty aktualizowane na jednym serwerze Ingres mogą być następnie replikowane na inne serwery, zarówno lokalne, jak i zdalne, za pomocą replikacji z wieloma wzorcami. Jeśli jeden serwer ulegnie awarii, połączenia klientów mogą zostać przekierowane na inny serwer. Nie jest wymagane, aby wszystkie serwery Ingres w środowisku replikowały się między sobą, ponieważ może to spowodować nadmierny ruch sieciowy w dużych implementacjach. Zamiast tego Ingres Replicator umożliwia replikację odpowiednich danych na odpowiednie serwery bez nadmiernego ruchu związanego z replikacją. Oznacza to, że niektóre serwery w środowisku mogą służyć jako kandydaci do przełączenia awaryjnego, podczas gdy inne serwery mogą spełniać inne wymagania, takie jak zarządzanie podzbiorem kolumn lub tabel w przypadku rozwiązania oddziałowego, podzbiorem wierszy dla regionu geograficznego lub replikacja jednokierunkowa na potrzeby raportowania serwer. W przypadku awarii źródła, celu lub sieci integralność danych jest wymuszana za pomocą tego protokołu dwufazowego zatwierdzania, zapewniając, że albo cała transakcja zostanie zreplikowana, albo żadna z nich. Ponadto Ingres Replicator może łączyć się z systemami RDBMS od wielu dostawców.

Zobacz też

Bibliografia

Linki zewnętrzne