Replica MySQL (3 maestri, 1 schiavo)
-
28-10-2019 - |
Domanda
Attualmente sono in procinto di impostare la replica MySQL.
Devo ottenere dati da tre posti.
Quindi per esempio ho
Hai bisogno di questi dati
Server1 - Database1
Server2 - Database2
Server3 - Database3
Memorizza i dati qui
Server4 - Database4
Ne ho bisogno per scopi di segnalazione.
Ho letto che non puoi connetterti a più di un maestro. Quindi, detto questo, proverò una topologia "maestro" perché penso di capire cosa sta succedendo con questo
Quindi il flusso di dati sembrerà così
Server1 -> server2 -> Server3 -> Server4
server2 e Server3 Avrà motori di archiviazione Blackhole per i database replicati in modo da non archiviare le informazioni su questi server, ma le informazioni sono ancora registrate al log binario in modo che tutte le dichiarazioni si allontanino per mantenere aggiornato Server4.
Lo capisco correttamente?
Soluzione
Questo funzionerà ma non è l'implementazione più bella e potrebbe anche causare problemi in futuro. Prima di aggiungere una nuova tabella su server1 o server2 dovrà creare il BLACKHOLE
Tabelle sui server a valle, altrimenti finirai con le tabelle reali. Immagino che potresti aggirarlo scrivendo uno script che funziona su Server2 e Server3 ogni notte che cerca tabelle non nulle ALTER TABLE
per modificarli in BLACKHOLE
tavoli.
Hai bisogno che i dati di reporting siano aggiornati? In caso contrario, consiglierei di lanciare tutta questa idea e di tirare periodicamente i dump dei dati in server4 come richiesto.
EDIT: (il giorno successivo) Dopo un po 'di pensiero, penso che se fossi io probabilmente avrei cercato di eseguire tre istanze mysql separate su Server4 Ognuno di loro come schiavo diretto di uno dei server.
Usando questo approccio non c'è replica catena, la configurazione della replica è molto più semplice/normale e ogni coppia DB è autonoma.
È facile e abbastanza normale eseguire più istanze MySQL, c'è anche uno strumento chiamato mysqld_multi Ciò ti aiuterà a configurarlo.