2012-02-11 24 views
7

Utilizzando semplici impostazioni di replica con un MASTER e uno SLAVE, come si può garantire che SLAVE e MASTER siano completamente sincronizzati?Come garantire la replica MySQL SLAVE è completamente sincronizzato con la replica MASTER?

Ora sì, che sia partito dalla stessa identica immagine e la replica sta lavorando e il reporting che tutto va bene, MA: * E 'accaduto che ci sono stati errori di fermare la replicazione e quindi la replica doveva essere fermato e poi riprende . * Forse un cambiamento si è verificato accidentalmente sullo SLAVE e quindi non è più lo stesso del MASTER. * Altri scenari che potrebbero interrompere la sincronizzazione.

Mentre è possibile eseguire un grande mysqldump di entrambi i database e confrontare i file, sarei interessato a un metodo che può essere implementato più facilmente e può anche essere controllato automaticamente per garantire che tutto sia sincronizzato.

Grazie

+0

http://dba.stackexchange.com/questions/17501/monitoring-replication-on-mysql –

risposta

8

Hai provato Percona Toolkit (precedentemente noto come Maatkit)? Puoi usare uno dei loro strumenti che è pt-table-checksum per il tuo caso. Puoi controllare anche altri strumenti sul loro sito web.

pt-tavolo-checksum esegue un controllo di coerenza linea replica esecuzione di query checksum sul master, che produce diversi risultati sul repliche che sono incoerenti con il master. Il DSN opzionale specifica l'host master. Lo stato di uscita dello strumento è diverso da zero se vengono rilevate differenze o se si verificano avvisi o errori .

Il seguente comando si collegherà al master replica su localhost, checksum ogni tavolo, e riferire i risultati su ogni replica rilevato:

+0

Non ho ancora provato ma sembra promettente. Grazie :) – Collector

+0

Hanno anche uno strumento chiamato 'pt-table-sync' che ti permette di sincronizzare le tabelle se trovi qualcosa di sbagliato. Usa 'pt-table-checksum' per trovare potenziali problemi e rilascia dichiarazioni al master per forzare la replica dello slave, quindi usalo a tuo rischio! – ESG

3

Se si dispone di versioni server MySQL 5.6.14 o superiore, può utilizzare il Controllo sincronizzazione replica MySQL. È incluso nel pacchetto del server MySql. È progettato per funzionare esclusivamente per server che supportano identificatori di transazioni globali (GTID) e hanno gtid_mode = ON.

Questa utility consente di controllare i server di replica per la sincronizzazione. Controlla la coerenza dei dati tra master e slave o tra due slave. L'utilità riporta gli oggetti mancanti e i dati mancanti. L'utilità può operare su una topologia di replica attiva, applicando un processo di sincronizzazione per verificare i dati. I server su cui la replica non è attiva possono ancora essere controllati, ma il processo di sincronizzazione verrà saltato. In tal caso, spetta all'utente sincronizzare manualmente i server.

See MySQL Documentation for more information

+0

Modificato la risposta per favore cpbumz. Questo strumento è davvero utile, – Franco

+0

Questo strumento funziona come un fascino. Ho creato un file batch di un solo liner per eseguire questo strumento ogni sera e quindi utilizzando un altro servizio ottengo il file dei risultati in email. A proposito, la replica GTID è anche un fascino. –

3

Hai ragione a diffidare di una messa a punto apparentemente sano replicazione master/slave! Stavamo andando bene quando improvvisamente ricevemmo avvisi da check_mk riguardo a un database che esisteva sul nostro master che non esisteva sul nostro schiavo ... ma gli output di stato master e slave erano buoni! Quanto è snervante? Il modo per dimostrare l'integrità del processo consiste nell'utilizzare i checksum per verificare i dati.

Ho visto molte chiacchiere su Internet che consigliano pt-table-checksum.Tuttavia, il suo limitations si è rivelato troppo oneroso per noi per essere comodo con. Ancora più importante, richiede e imposta anche la replica basata su istruzioni (vedere il link checksum pt-table). Come dice lo mysql 5.6 online documentation, (per la replica basata su righe ...) "tutte le modifiche possono essere replicate, questa è la forma più sicura di replica". Esistono altri svantaggi nella replica basata sulle istruzioni che rende nervosi i nostri sviluppatori perché alcune funzioni non possono essere replicate correttamente; vedi il documento per un elenco.

Abbiamo già riscontrato problemi con un master e uno slave utilizzando la replica basata sulle istruzioni, quindi stiamo cercando in particolare di evitarlo.

Stiamo per provare mysqlrplsync che menziona specificamente che è "works independently of the binary log format (row, statement, or mixed)". Ricorda, tuttavia, che gtid-mode deve essere acceso e richiede MySQL 5.6.14 e versioni successive ... il che significa, credo, che il MySQL fornito con RHEL7/CentOS 7 è fuori produzione. Avrai bisogno di ottenere la MySQL Community Edition, che è lasciata come esercizio per il lettore but you can go here for the packages o here for the repos, including RHEL derivatives and Debian.

Problemi correlati