Replikacja wielu wzorców
Replikacja wielowzorcowa 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 odpowiadają na zapytania dotyczące danych klientów. System replikacji z wieloma wzorcami jest odpowiedzialny za propagowanie modyfikacji danych dokonanych przez każdego członka grupy do reszty grupy i rozwiązywanie wszelkich konfliktów, które mogą powstać między jednoczesnymi zmianami wprowadzanymi przez różnych członków.
Replikację multi-master można porównać z replikacją repliki podstawowej , w której pojedynczy członek grupy jest wyznaczony jako „master” 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 przełączania awaryjnego , w których pasywne serwery replik replikują dane podstawowe, aby przygotować się do przejęcia w przypadku, gdy master 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ą pewnego rodzaju algorytmu Consensus , ale mogą być również realizowane za pomocą niestandardowych lub zastrzeżonych algorytmów specyficznych dla oprogramowania.
Głównymi celami replikacji z wieloma wzorcami są zwiększona dostępność i krótszy czas odpowiedzi serwera.
Zalety
- Dostępność : jeśli jeden master ulegnie awarii, inne mastery kontynuują aktualizację bazy danych .
- Dostęp rozproszony: Moduły nadrzędne mogą znajdować się w kilku lokalizacjach fizycznych, tj. być rozproszone w sieci.
Niedogodności
- Spójność : Większość systemów replikacji z wieloma wzorcami jest tylko luźno spójna, tj. leniwa i asynchroniczna, co narusza właściwości ACID .
- Wydajność : Systemy replikacji wymagającej 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 w miarę wzrostu liczby zaangażowanych węzłów i wzrostu opóźnień.
Implementacje
Usługi katalogowe
Wiele serwerów katalogowych jest opartych na protokole LDAP (Lightweight Directory Access Protocol ) i implementuje replikację z wieloma wzorcami.
Active Directory
Jedną z bardziej rozpowszechnionych implementacji replikacji typu multi-master w serwerach katalogowych jest Active Directory firmy Microsoft . W usłudze Active Directory obiekty, które są aktualizowane na jednym kontrolerze domeny są następnie replikowane do innych kontrolerów domeny za pośrednictwem replikacji z wieloma wzorcami. Nie jest wymagana wzajemna replikacja wszystkich kontrolerów domeny, ponieważ spowodowałoby to nadmierny ruch w sieci w przypadku dużych wdrożeń usługi Active Directory. Zamiast tego kontrolery domeny mają złożony wzorzec aktualizacji, który gwarantuje, że wszystkie serwery są aktualizowane na czas bez nadmiernego ruchu związanego z replikacją. Niektóre potrzeby usługi Active Directory są jednak lepiej zaspokajane przez elastyczną obsługę pojedynczego wzorca .
Katalog CA
Katalog CA obsługuje replikację z wieloma wzorcami.
OpenDS/OpenDJ
OpenDS (i jego następca OpenDJ ) zaimplementował multi-master od wersji 1.0. Replikacja multi-master OpenDS/OpenDJ jest asynchroniczna, wykorzystuje dziennik z mechanizmem publikowania-subskrybowania, który umożliwia skalowanie do dużej liczby węzłów. Replikacja OpenDS/OpenDJ rozwiązuje konflikty na poziomie wpisów i atrybutów. Replikacja OpenDS/OpenDJ może być używana w sieci rozległej .
OpenLDAP
OpenLDAP , szeroko stosowany serwer LDAP typu open source , implementuje replikację multi-master od wersji 2.4 (październik 2007) [1] .
systemy zarządzania bazą danych
Amazonka Aurora
Amazon Aurora składa się z węzłów zapisu, które replikują rekordy powtórzeń, oraz 6 węzłów magazynowania. Węzeł zapisujący wysyła zmiany 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 systemu replikacji z wieloma wzorcami, zbudowanego z magazynu danych przeznaczonego tylko do dołączania i korzystania z Multiversion Concurrency Control (MVCC) .
Każdy dokument zawiera identyfikator wersji, więc każdy rekord przechowuje ewolucyjną oś czasu wszystkich poprzedzających go identyfikatorów wersji — 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 jak 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 w wersjach i wprowadza niezbędne zmiany w celu na podstawie tego, co znalazło w historii źródłowej bazy danych. Replikacja dwukierunkowa jest wynikiem wykonania kolejnej replikacji z źródłowymi i docelowymi .
ArangoDB
ArangoDB to natywny wielomodelowy system baz danych wykorzystujący replikację multi-master. 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ść niż dostępność. Klienci doświadczają tego samego widoku bazy danych niezależnie od tego, z którym węzłem się łączą. Klaster nadal obsługuje żądania nawet w przypadku awarii jednego komputera.
Obłok
Cloudant , rozproszony system baz danych, wykorzystuje w dużej mierze ten sam interfejs HTTP API co Apache CouchDB i udostępnia te same możliwości replikacji za pomocą Multiversion Concurrency Control (MVCC) . Bazy danych Cloudant mogą replikować się między sobą, ale wewnętrznie węzły w klastrach Cloudant korzystają z replikacji multi-master, aby zachować wzajemną synchronizację i zapewnić wysoką dostępność użytkownikom API.
Klaster eXtremeDB
eXtremeDB Cluster to podsystem klastrowania dla rodziny wbudowanych baz danych McObject eXtremeDB . Utrzymuje spójność bazy danych w wielu węzłach sprzętowych, replikując transakcje w sposób synchroniczny (zatwierdzanie dwufazowe). Ważną cechą eXtremeDB Cluster jest transakcji , w przeciwieństwie do schematów replikacji opartych na plikach dziennika, instrukcjach SQL lub innych, które mogą, ale nie muszą, gwarantować powodzenie lub niepowodzenie całej transakcji. W związku z tym eXtremeDB Cluster jest ACID (nie BASE ani ewentualną spójnością ); zapytanie wykonane w dowolnym węźle klastra zwróci taki sam wynik, jak gdyby zostało wykonane w dowolnym innym węźle 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 multi-master wykorzystuje funkcję zatwierdzania dwufazowego Oracle, aby zapewnić, że wszystkie bazy danych w klastrze mają spójny zestaw danych .
MicrosoftSQL
Microsoft SQL zapewnia replikację z wieloma wzorcami poprzez replikację peer-to-peer. Zapewnia skalowalne rozwiązanie o wysokiej dostępności dzięki utrzymywaniu kopii danych w wielu węzłach. Replikacja peer-to-peer, zbudowana na fundamencie replikacji transakcyjnej, propaguje zmiany spójne transakcyjnie w czasie zbliżonym do rzeczywistego.
MySQL / MariaDB
Na podstawowym poziomie możliwe jest osiągnięcie schematu replikacji z wieloma wzorcami, począwszy od MySQL w wersji 3.23 z replikacją cykliczną. Odchodząc od tego, MariaDB i MySQL są dostarczane z pewnym wsparciem replikacji, z których każdy ma inne niuanse.
W zakresie wsparcia bezpośredniego mamy:
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 nazywa się to wieloźródłowym dostępnym 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 wzorcami od wersji 6.3, zapewniając prawdziwe możliwości wielu wzorców dla serwera MySQL.
Istnieje również zewnętrzny projekt, Galera Cluster, stworzony przez codership Archived 2011-09-27 at the Wayback Machine , który zapewnia prawdziwe możliwości multi-master, w oparciu o rozwidlenie silnika pamięci masowej InnoDB i niestandardowe wtyczki do replikacji. Replikacja jest synchroniczna, więc żaden konflikt nie jest możliwy.
Percona XtraDB Cluster to także połączenie biblioteki replikacyjnej Galera i MySQL obsługującej multi-master.
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 ( archiwum 2017-07-05 w Wayback Machine ) został porzucony w 2007 roku.
Dokumentacja replikacji dla PostgreSQL kategoryzuje różne dostępne typy replikacji. Istnieją różne opcje rozproszonego multi-master, w tym Bucardo , rubyrep i BDR Bi-Directional Replication .
PostgreSQL BDR
BDR ma na celu ostateczne włączenie do rdzenia PostgreSQL i został porównany jako wykazujący znacznie lepszą wydajność w porównaniu z wcześniejszymi opcjami. BDR obejmuje replikację zapisów danych (DML), a także zmiany w definicji danych (DDL) i sekwencje globalne. Węzły BDR można aktualizować online począwszy 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, szybką replikację, spójność zapytań wielowęzłowych i wiele innych funkcji.
Ingres
W ramach replikatora Ingres obiekty, które są aktualizowane na jednym serwerze Ingres, mogą być następnie replikowane na inne serwery, zarówno lokalne, jak i zdalne, za pośrednictwem 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ż mogłoby 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łączania awaryjnego, podczas gdy inne serwery mogą spełniać inne wymagania, takie jak zarządzanie podzbiorem kolumn lub tabel dla rozwiązania działowego, podzbiorem wierszy dla regionu geograficznego lub jednokierunkową replikacją na potrzeby raportowania. serwer. W przypadku awarii źródła, celu lub sieci wymusza to integralność danych protokół zatwierdzania dwufazowego , zapewniając, że albo cała transakcja jest replikowana, albo żadna z nich nie jest replikowana. Ponadto Ingres Replicator może działać w oparciu o RDBMS wielu dostawców [ których? ] , aby je połączyć.
Zobacz też
- Elastyczna obsługa pojedynczego mastera
- Active Directory
- System zarządzania rozproszoną bazą danych
- Transfer strefy DNS
- Replikacja optymistyczna
Linki zewnętrzne
- Model replikacji usługi Active Directory
- Terminy i definicje dotyczące replikacji bazy danych
- SymmetricDS to niezależne od bazy danych oprogramowanie do synchronizacji danych . Wykorzystuje technologie sieciowe i bazodanowe do replikacji tabel między relacyjnymi bazami danych w czasie zbliżonym do rzeczywistego. Oprogramowanie zostało zaprojektowane do skalowania dla dużej liczby baz danych, pracy na połączeniach o niskiej przepustowości i wytrzymywania okresów przerw w działaniu sieci. Obsługuje MySQL , Oracle , SQL Server , PostgreSQL , IBM Db2 , Firebird , Interbase , HSQLDB , H2 , Apache Derby , Informix , Greenplum , SQLite , Sybase ASE i Sybase ASA . Licencjonowany zarówno w ramach licencji open source ( GPL ), jak i licencji komercyjnych.
- Daffodil Replicator to narzędzie Java do synchronizacji danych , migracji danych i tworzenia kopii zapasowych danych między różnymi serwerami baz danych. Daffodil Replicator działa na standardowym JDBC i obsługuje replikację w heterogenicznych bazach danych. Obecnie obsługuje następujące bazy danych: Microsoft SQL Server , Oracle , Daffodil database, IBM Db2 , Apache Derby , MySQL , PostgreSQL . Daffodil Replicator jest dostępny zarówno w wersji korporacyjnej (komercyjnej), jak i open source ( na licencji GPL ).
- Projekt DMOZ Open Directory — strona replikacji bazy danych