martedì 2 febbraio 2016

Resync Mysql

In questo post avevo provato a fare il mirroring master/slave di un database Mysql su macchine differenti


Prova di mysql mirroring su macchine virtuali Debian in VMWare

In generale la sincronia dei dati anche se la macchina slave e' spenta od offline. Al momento di ristabilire la connessione lo slave e' in grado di stabilire le differenze tra le proprie tabelle e quelle del master per richiedere la differenza

In alcuni casi questa procedura puo' entrare in crisi ed e' necessario effettuare un resync manuale con la procedura indicata qui passando da un file dump dei dati del master

In pratica si procede stoppando lo slave

stop slave;

si blocca il master e si effettua il dump dei dati in modalita' lock

reset master;
flush tables with read lock;

si esce dalla shell di Mysql e si crea il dump dei dati

mysqldump -u root -p mirrdatabase > dump.sql

si rientra nella shell di Mysql e si sbloccano le tabelle

unlock tables;

a questo punto si copiano i dati sullo slave (che ha il mirroring bloccato)

mysql -u root -p mirrdatabase < dump.sql

(nello script dump.sql ci sono le informazioni per cancellare le tabelle precedentemente presenti per cui non e' necessario farlo a mano)

si riavvia il mirroring
reset slave;
change master to master_log_file='mysql-bin.000001', master_log_pos=1;start slave;


questa procedura puo' essere utile nel momento di creare un mirroring di una macchina gia' in produzione da diverso tempo con una grande quantita' di dati che potrebbero creare problemi in fase di sincronia sia alla CPU che al traffico di rete