Informazioni sulla replica di Galera

Stai visualizzando una vecchia versione di questo article. Visualizza la versione più recente.

La replica di Galera avviene al momento del commit delle transazioni, diffondendo all'intero cluster l'insieme delle modifiche, perché queste vengano applicate. Il client si connette direttamente al DBMS. L'API wsrep (write set replication API) definisce l'interfaccia tra Galera e il DBMS.

Replica sincrona o asincrona

La differenza basilare tra la replica sincrona e quella asincrona è che quella "sincrona" garantisce che se avvengono modifiche in uno dei nodi del cluster, essi avvengono anche negli altri nodi in modo "sincrono", cioè nello stesso momento. La replica "asincrona" non dà garanzie riguardo al ritardo tra l'applicazione dei cambiamenti sul nodo "master" e la loro propagazione agli "slave". Questo ritardo può essere breve o lungo - è una questione di fortuna. Ciò implica anche che se il master va in crash, alcune delle ultime modifiche potrebbero andare perse.

Teoreticamente, la replica sincrona ha un certo numero di vantaggi su quella asincrona:

  • ha sempre un'elevata disponibilità (non c'è perdita di dati quando uno dei nodi va in crash e le repliche dei dati sono sempre coerenti)
  • le transazioni possono essere eseguiti su tutti i nodi in parallelo
  • garantisce la causalità sull'intero cluster (un SELECT S eseguito dopo la transazione T vedrà sempre gli effetti della transazione anche se viene eseguito su un nodo differente)

Tuttavia in pratica i database sincroni tradizionalmente sono sempre stati implementati tramite il cosiddetto "commit a 2 fasi", o locking distribuito, che si è dimostrato molto lento. Le basse prestazioni e la complessità dell'implementazione della replica sincrona hanno portato a una situazione in cui la replica asincrona rimane dominante, ai fini della scalabilità e dell'alta disponibilità. I database open source largamente utilizzati come MySQL e PostgreSQL offrono solo soluzioni di replica asincrona.

Metodo di replica basato sulla certificazione

Un approccio alternativo alla replica sincrona dei database utilizzando la Comunicazione in Gruppo e le tecniche di ordinamento delle transazioni, è stato suggerito da un certo numero di ricercatori (per esempio si veda Database State Machine Approach e Don't Be Lazy, Be Consistent), e i prototipi delle implementazioni sembrano contenere molte promesse. Abbiamo combinato la nostra esperienza nella replica sincrona dei database con le ultime ricerche nel campo, per creare il Galera Replication Toolkit.

La replica Galera è altamente trasparente e scalabile, una soluzione di replica sincrona per ottenere l'alta disponibilità e performance migliori. I cluster basati su Galera sono:

  • Altamente disponibili
  • Altamente trasparenti
  • Altamente scalabili (vicini alla scalabilità lineare, che può essere raggiunta da alcune applicazioni)

Generic Replication Library

Galera replication functionality is implemented as a shared library and can be linked with any transaction processing system which implements the wsrep API hooks.

The Galera replication library is a protocol stack providing functionality for preparing, replicating and applying of transaction write sets. It consists of:

  • wsrep API specifies the interface — responsibilities for DBMS and replication provider
  • wsrep hooks is the wsrep integration in the DBMS engine.
  • Galera provider implements the wsrep API for Galera library
  • certification layer takes care of preparing write sets and performing certification
  • replication manages replication protocol and provides total ordering capabilities
  • GCS framework provides plugin architecture for group communication systems
  • many gcs implementations can be adapted, we have experimented with spread and our in-house implementations: vsbes and gemini

See Also

Commenti

Sto caricando i commenti......
Content reproduced on this site is the property of its respective owners, and this content is not reviewed in advance by MariaDB. The views, information and opinions expressed by this content do not necessarily represent those of MariaDB or any other party.