MySQL replica master-master: rimettere in sincro i due DB

La replica master-master di MySQL è un sistema ormai collaudato e funziona abbastanza bene. Ci possono eprò essere eventi *catastrofici* che invalidano uno dei due DB e sorge la necessità di rimettere in piedi la replica a partire dai dati presenti in uno dei DB.

Vediamo come procedere con una decina di step. Chiamiamo GS il server il server con i dati corretti e BS il server con i dati “rovinati”. Ipotizziamo che il DB da rimettere in replica si chiami CMS.

  1. Innanzitutto assicuriamoci che BS non stia ricevendo ancora query di INSERT/UPDATE/DELETE, ETC.
  2. BS: dalla console mysql, digitare STOP SLAVE; in modo da fermare la replica;
  3. GS: eseguiamo tre passi dalla console mysql:
    1. digitiamo STOP SLAVE; per fermare la replica anche su GS;
    2. digitiamo FLUSH TABLES WITH READ LOCK; per bloccare gli aggiornamenti sul DB;
    3. digitiamo SHOW MASTER STATUS; e prendere nota dei valori dei campi File (es mysql-bin.xxxxxx) e Position (es yyyyyy);
  4. GS: senza chiudere la console mysql, aprire una nuova shell e fare un dump del DB: mysqldump -K --single-transaction cms | gzip -9 >cms.sql.gz
  5. GS: dalla console mysql, sblocchiamo il DB digitando UNLOCK TABLES;
  6. BS: importiamo il file di dump: zcat cms.sql.gz | mysql cms
  7. BS: dalla console mysql risincronizziamo la replica digitando CHANGE MASTER TO master_log_file='mysql-bin.xxxxxx', master_log_pos=yyyyyy; (dove xxxxxx e yy devono essere i valori recuperati al punto 3.C;
  8. BS: dalla console mysql riavviamo la replica digitando START SLAVE; e verifichiamo che funzioni con un SHOW SLAVE STATUS;
  9. BS: recuperiamo i dettagli anche del master su questo nodo con SHOW MASTER STATUS;e prendiamo nota dei campi File (es mysql-bin.zzzzzz) e Position (es wwwwww);
  10. GS: risincronizziamo la replica anche sul primo nodo, digitando dalla console mysql CHANGE MASTER TO master_log_file='mysql-bin.zzzzzz', master_log_pos=wwwwww;
  11. GS: riavviamo la replica anche sul primo nodo, digitando dalla console mysql START SLAVE;

enjoy!

Se hai trovato utili le informazioni su questo blog,
Fai una donazione!
Clicca sul bottone qui sotto o almeno clicca sul banner pubblicitario 🙂



Taggato su:

Commenta