Multi-master replikering
Multi-master replikering är en metod för databasreplikering som gör att data kan lagras av en grupp datorer och uppdateras av alla medlemmar i gruppen. Alla medlemmar är lyhörda för kunddatafrågor. Multimasterreplikeringssystemet är ansvarigt för att sprida dataändringarna som gjorts av varje medlem till resten av gruppen och lösa eventuella konflikter som kan uppstå mellan samtidiga ändringar som görs av olika medlemmar.
Multi-master-replikering kan jämföras med primär-replik- replikering, där en enskild medlem av gruppen är utsedd som "master" för en given databit och är den enda noden som får modifiera denna datapost. Andra medlemmar som vill modifiera dataposten måste först kontakta masternoden. Att endast tillåta en enda master gör det lättare att uppnå konsistens bland medlemmarna i gruppen, men det är mindre flexibelt än multi-master replikering.
Multi-masterreplikering kan också jämföras med failover-klustring där passiva replikservrar replikerar masterdata för att förbereda för övertagande i händelse av att mastern slutar fungera. Mastern är den enda servern som är aktiv för klientinteraktion.
Ofta hanteras kommunikation och replikering i Multi-master-system via en typ av Consensus-algoritm , men kan också implementeras via anpassade eller proprietära algoritmer som är specifika för programvaran.
De primära syftena med multi-master replikering är ökad tillgänglighet och snabbare serversvarstid.
Fördelar
- Tillgänglighet : Om en master misslyckas fortsätter andra master att uppdatera databasen .
- Distribuerad åtkomst: Masters kan placeras på flera fysiska platser, dvs distribueras över nätverket.
Nackdelar
- Konsistens : De flesta multi-master replikeringssystem är endast löst konsistenta, dvs lata och asynkrona, vilket bryter mot ACID -egenskaper.
- Prestanda : Ivriga replikeringssystem är komplexa och ökar kommunikationens latens .
- Integritet : Frågor som konfliktlösning kan bli svårlösta när antalet involverade noder ökar och latensen ökar.
Genomföranden
Katalogtjänster
Många katalogservrar är baserade på Lightweight Directory Access Protocol (LDAP) och implementerar multi-master replikering.
Active Directory
av multimasterreplikering i katalogservrar är Microsofts Active Directory . Inom Active Directory replikeras sedan objekt som uppdateras på en domänkontroller till andra domänkontrollanter genom multimasterreplikering. Det krävs inte för alla domänkontrollanter att replikera med varandra eftersom detta skulle orsaka överdriven nätverkstrafik i stora Active Directory-distributioner. Istället har domänkontrollanter ett komplext uppdateringsmönster som säkerställer att alla servrar uppdateras i tid utan överdriven replikeringstrafik. Vissa Active Directory-behov tillgodoses dock bättre av Flexible single master operation .
CA-katalog
CA Directory stöder multi-master replikering.
OpenDS/OpenDJ
OpenDS (och dess efterföljande produkt OpenDJ ) implementerade multi-master sedan version 1.0. OpenDS/OpenDJ-multimasterreplikeringen är asynkron, den använder en logg med en publicerings-prenumerationsmekanism som tillåter skalning till ett stort antal noder. OpenDS/OpenDJ-replikering gör konfliktlösning på ingångs- och attributnivå. OpenDS/OpenDJ-replikering kan användas över ett wide area-nätverk .
ÖppnaLDAP
OpenLDAP , den flitigt använda LDAP-servern med öppen källkod , implementerar multimasterreplikering sedan version 2.4 (oktober 2007) [1] .
Databashanteringssystem
Amazon Aurora
Amazon Aurora består av skribentnoder, som replikerar redo-poster, och 6 lagringsnoder. Writer-noden skickar ändring till varje lagringsnod, som var och en kontrollerar för konflikter och sedan rapporterar bekräftelse eller avslag på ändringen.
Apache CouchDB
Apache CouchDB använder ett enkelt, HTTP-baserat multi-master-replikeringssystem byggt från användningen av en endast tilläggsdatalager och användning av Multiversion Concurrency Control (MVCC) .
Varje dokument innehåller ett revisions-ID, så varje post lagrar den evolutionära tidslinjen för alla tidigare revisions-ID:n som leder fram till sig självt – vilket utgör grunden för CouchDB:s MVCC -system. Dessutom håller den ett index efter sekvens för hela databasen. "Replikeringsprocessen kopierar bara den senaste versionen av ett dokument, så alla tidigare versioner som bara fanns i källdatabasen kopieras inte till måldatabasen."
CouchDB-replikatorn fungerar som en enkel HTTP-klient som verkar på både en käll- och måldatabas . Den jämför aktuella sekvens-ID:n för databasen, beräknar revisionsskillnader och gör nödvändiga ändringar av målet baserat på vad det hittade i källdatabasens historia . Dubbelriktad replikering är resultatet av att bara göra en annan replikering med källan och målvärdena ombytta .
ArangoDB
ArangoDB är ett inbyggt multi-modell databassystem som använder multi-master replikering. Kluster i ArangoDB använder CP-master/master-modellen utan en enda felpunkt. När ett kluster stöter på en nätverkspartition föredrar ArangoDB att behålla sin interna konsistens framför tillgänglighet. Klienter upplever samma vy av databasen oavsett vilken nod de ansluter till. Och klustret fortsätter att betjäna förfrågningar även när en maskin misslyckas.
Cloudant
Cloudant , ett distribuerat databassystem, använder i stort sett samma HTTP API som Apache CouchDB , och exponerar samma förmåga att replikera med Multiversion Concurrency Control (MVCC) . Cloudant-databaser kan replikera mellan varandra, men internt använder noder inom Cloudant-kluster multi-master replikering för att hålla sig synkroniserade med varandra och ge hög tillgänglighet för API-konsumenter.
eXtremeDB-kluster
eXtremeDB Cluster är klustringsundersystemet för McObjects produktfamilj eXtremeDB inbäddade databas. Den upprätthåller databaskonsistens över flera hårdvaru-noder genom att replikera transaktioner på ett synkront sätt (tvåfas commit). En viktig egenskap hos eXtremeDB Cluster är transaktionsreplikering , i motsats till loggfilbaserade, SQL-satsbaserade eller andra replikeringsscheman som kan eller kanske inte garanterar framgång eller misslyckande för hela transaktioner. Följaktligen är eXtremeDB Cluster ett ACID- kompatibelt system (inte BASE eller eventuell konsistens ) ; en fråga som körs på vilken klusternod som helst kommer att returnera samma resultat som om den exekveras på någon annan klusternod.
Orakel
Databaskluster implementerar multimasterreplikering med en av två metoder . Asynkron multi-masterreplikering befäster dataändringar till en uppskjuten transaktionskö som regelbundet bearbetas på alla databaser i klustret. Synkron multi-master replikering använder Oracles tvåfas commit funktionalitet för att säkerställa att alla databaser med klustret har en konsekvent datauppsättning .
Microsoft SQL
Microsoft SQL tillhandahåller multimasterreplikering genom peer-to-peer-replikering. Det ger en utskalningslösning och hög tillgänglighet genom att behålla kopior av data över flera noder. Peer-to-peer-replikeringen bygger på grunden för transaktionsreplikering och sprider transaktionskonsekventa förändringar i nästan realtid.
MySQL / MariaDB
På en grundläggande nivå är det möjligt att uppnå ett multimasterreplikeringsschema som börjar med MySQL version 3.23 med cirkulär replikering. Med avvikelse från det MariaDB och MySQL med visst replikeringsstöd, var och en med olika nyanser.
När det gäller direkt stöd har vi:
MariaDB: stöder inbyggt multi-master replikering sedan version 10.0, men konfliktlösning stöds inte, så varje master måste innehålla olika databaser. På MySQL kallas detta multi-source tillgängligt sedan version 5.7.6 .
MySQL: MySQL Group Replication, ett plugin för virtuell synkron multi-master med konflikthantering och distribuerad återställning släpptes med 5.7.17 .
Klusterprojekt:
MySQL Cluster stöder konfliktdetektering och lösning mellan flera masters sedan version 6.3 för äkta multi-master-kapacitet för MySQL-servern.
Det finns också ett externt projekt, Galera Cluster skapat av kodarskap Archived 2011-09-27 at the Wayback Machine , som ger äkta multi-master-kapacitet, baserat på en gaffel av InnoDB-lagringsmotorn och anpassade replikeringsplugin. Replikering är synkron, så ingen konflikt är möjlig.
Percona XtraDB Cluster är också en kombination av Galera replikeringsbibliotek och MySQL som stöder multi-master.
PostgreSQL
Olika alternativ för synkron multi-master replikering finns. Postgres-XL som är tillgänglig under Mozilla Public License och PostgresXC (nu känd som Postgres-X2 ) som är tillgänglig under samma licens som PostgreSQL själv är exempel. Observera att PgCluster- projektet ( arkiverat 2017-07-05 på Wayback Machine ) övergavs 2007.
Replikeringsdokumentationen för PostgreSQL kategoriserar de olika typerna av replikering som är tillgängliga. Det finns olika alternativ för distribuerad multi-master, inklusive Bucardo , rubyrep och BDR Bi-Directional Replication .
PostgreSQL BDR
BDR syftar till att eventuellt inkluderas i PostgreSQL-kärnan och har riktmärkts som att visa avsevärt förbättrad prestanda jämfört med tidigare alternativ. BDR inkluderar replikering av dataskrivningar (DML), såväl som ändringar av datadefinition (DDL) och globala sekvenser. BDR-noder kan uppgraderas online från version 0.9 och framåt. 2ndQuadrant har utvecklat BDR kontinuerligt sedan 2012, med systemet som använts i produktion sedan 2014. Den senaste versionen av BDR 3.6 tillhandahåller konfliktdetektering på kolumnnivå, CRDT:er, ivrig replikering, konsistens med flera noder, och många andra funktioner.
Ingres
Inom Ingres Replicator kan objekt som uppdateras på en Ingres-server sedan replikeras till andra servrar oavsett om de är lokala eller fjärranslutna genom multi-masterreplikering. Om en server misslyckas kan klientanslutningar omdirigeras till en annan server. Det krävs inte för alla Ingres-servrar i en miljö att replikera med varandra eftersom detta kan orsaka överdriven nätverkstrafik i stora implementeringar. Istället tillåter Ingres Replicator att lämplig data replikeras till lämpliga servrar utan överdriven replikeringstrafik. Detta innebär att vissa servrar i miljön kan fungera som failover-kandidater medan andra servrar kan uppfylla andra krav som att hantera en delmängd av kolumner eller tabeller för en avdelningslösning, en delmängd av rader för en geografisk region eller envägsreplikering för en rapportering server. I händelse av ett källa-, mål- eller nätverksfel, upprätthålls dataintegriteten genom detta tvåfas commit-protokoll genom att säkerställa att antingen hela transaktionen replikeras, eller så är inget av det. Dessutom kan Ingres Replicator arbeta över RDBMS från flera leverantörer [ vilken ? ] för att ansluta dem.
Se även
- Flexibel single master-drift
- Active Directory
- Distribuerat databashanteringssystem
- DNS-zonöverföring
- Optimistisk replikering
externa länkar
- Active Directory-replikeringsmodell
- Termer och definitioner för databasreplikering
- SymmetricDS är databasoberoende programvara för datasynkronisering . Den använder webb- och databasteknik för att replikera tabeller mellan relationsdatabaser i nästan realtid. Programvaran har utformats för att skala för ett stort antal databaser, fungera över anslutningar med låg bandbredd och motstå perioder av nätverksavbrott. Den stöder MySQL , Oracle , SQL Server , PostgreSQL , IBM Db2 , Firebird , Interbase , HSQLDB , H2 , Apache Derby , Informix , Greenplum , SQLite , Sybase ASE och Sybase ASA . Licensierad under både öppen källkod ( GPL ) och kommersiella licenser.
- Daffodil Replicator är ett Java- verktyg för datasynkronisering , datamigrering och säkerhetskopiering av data mellan olika databasservrar. Daffodil Replicator fungerar över standard JDBC- drivrutin och stöder replikering över heterogena databaser. För närvarande stöder den följande databaser: Microsoft SQL Server , Oracle , Daffodil-databasen, IBM Db2 , Apache Derby , MySQL och PostgreSQL . Daffodil Replicator är tillgänglig i både företagsversioner (kommersiell) och öppen källkod ( GPL -licensierad).
- DMOZ Open Directory Project - Databasreplikeringssida