Domanda

Voglio fare una macchina SLAVE dedicata per la replica dei dati di tre database su tre diversi server. In altre parole, quello che voglio fare Multiple Master => replica Single slave.

Esiste un modo per fare questo, così semplice come può essere?

Grazie!

È stato utile?

Soluzione

replicazione multi-master (slave con più master) non è supportato da MySQL (oltre MySQL Cluster). Si può fare una replica master-master di una circolare (anello) replica ( qui o qui ).

ad alte prestazioni secondo MySQL edizione gli autori descrivono un modo per emulare replica multi-master utilizzando una combinazione intelligente di replica master-master e la Blackhole motore di archiviazione (capitolo 8 della replica> replica topologie> soluzioni di replica personalizzato> Emulazione replica multimaster p 373 -. 375 )

Essi mostrano due forse topologie:

Utilizzo di due co-padroni (che consente di commutare il padrone dello schiavo da Master 1 a Master 2 )

  • Master 1: gli host DB1 e replicati DB2 da Master 2 ; il motore di memorizzazione per tutte le tabelle di DB2 viene modificato in Blackhole in modo che i dati non vengono effettivamente memorizzati su Master 1 .
  • Master 2: gli host DB2 e replicati DB1 da Master 1 ; il motore di memorizzazione per tutte le tabelle di DB1 viene modificato in Blackhole in modo che i dati non vengono effettivamente memorizzati su Master 2
  • Slave 1: replicati DB1 e DB2 da Master 1 o Master 2 (che consente di passare maestri); il risultato è che Slave 1 replica entrambi i database che sono effettivamente ospitati su due padroni diversi.

Utilizzo di un master-chain

  • Master 1: solo gli host DB1
  • Master 2: gli host DB2 e replicati DB1 da Master 1 ; il motore di memorizzazione per tutte le tabelle di DB1 viene modificato in Blackhole in modo che i dati non vengono effettivamente memorizzati su Master 2
  • Slave 1: replicati DB1 e DB2 da Master 2 ; il risultato è che Slave 1 replica entrambi i database che sono effettivamente ospitati su due padroni diversi.

Si prega di notare che questa configurazione consente solo di inviare aggiornamenti a DB1 a Master 1 e aggiornamenti di DB2 a Master 2 . È non possono inviare gli aggiornamenti a uno tavolo a maestri arbitrarie.

pehaps è possibile combinare la soluzione descritta con l'hack per una vera replica master-master (che consente aggiornamenti entrambi maestri) che utilizza una sorta di autoincrement-mutilazione e descritto qui o qui .

Altri suggerimenti

Non c'è modo che io sappia.

Tuttavia, se il requisito qui è semplicemente quello di avere una sola macchina di backup replica-based, è possibile facilmente abbastanza esegue tre server MySQL (su indirizzi e / o porte differenti) - lo facciamo qui, con due anelli di replica che ciascuno includere la nostra server di gestione temporanea in-house come nodo.

Un'idea off-the-wall, se davvero si vuole tutti i dati in un unico server e gli schemi di tabella sono o fisso, o più o meno statico e sotto il vostro controllo: impostare un server con i tre database su e collegare tutte le tabelle utilizzando il motore federata. In teoria (enorme avvertimento: Non ho mai provato!), Si può quindi replicare fuori quelle tabelle federate su un secondo server (di nuovo, possibilmente sulla stessa macchina), offrendo autentiche copie dal vivo dei dati su un singolo MySQL esempio. Si potrebbe anche provare la replica di nuovo, ma in questo modo forse si trova la follia:)

Non so molto su MySQL, ma non si ha la possibilità di impostare un 'caricare solo' configurazione di replica, in cui il ruolo del padrone / editore è solo quello di raccogliere gli aggiornamenti effettuati a / livello di utenti Slave .

Potrebbe valere la pena dare un'occhiata a di Maatkit tavolo sincronizzazione - non è la replica di "reale", ma potrebbe essere abbastanza buono.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top