Come modificare uno slave precedente MySQL in modo che diventi un master e rimuova le informazioni sullo stato dello slave?


10

Ho un master -> configurazione slave in cui il master ha fallito. Sono stato in grado di resettare il vecchio schiavo per essere un maestro e il vecchio padrone per schiavo da esso. Belle.

Quello che non riesco a fare è rimuovere le informazioni principali sul vecchio schiavo che ora è il nuovo maestro. Vedo:

mysql> show slave status \G
*************************** 1. row ***************************
           Slave_IO_State: 
              Master_Host: 10.1.2.101
              Master_User: replicationSlave
              Master_Port: 3306
              ...
              Slave_IO_Running: No
              Slave_SQL_Running: No

Ho letto molta documentazione di MySQL ma non ho ancora trovato un modo per cancellare le informazioni sugli slave dal nuovo master. Ho provato:

  1. RESET SLAVEche non sembra cancellare quelle impostazioni. [[In realtà rimuove il master.infofile ma non le impostazioni di memoria. Vedi sotto.]]
  2. CHANGE MASTER TO MASTER_HOST='' che sputa su un errore poiché è stato deprecato di recente.
  3. Verifica di my.cnfquali informazioni master non sono presenti poiché sono state aggiunte a livello di codice.
  4. RESET MASTERperché alcuni documenti mysql lo hanno raccomandato. Ciò reimposta solo i registri del cestino.
  5. Frugando nelle tabelle interne di MySQL per vedere se riesco a trovare i campi da cancellare.

Qual è il modo corretto di farlo su MySQL ~ 5.5.9? Grazie per qualsiasi aiuto.


Modificare:

Quindi si scopre che RESET SLAVErimuove il master.infofile come implicito @RolandoMySQLDBA. Tuttavia, è ancora necessario riavviare il server prima di rimuovere le informazioni sullo slave.

Esiste un modo per rimuovere queste informazioni slave senza riavviare mysqld?


Risposte:


10

In MySQL 5.5.16 e versioni successive, è possibile utilizzare RESET SLAVE ALLper fare tutto ciò che RESET SLAVEfa e ripristinare i parametri di connessione dalla memoria, in questo modo non richiede un riavvio mysqld.


6

Il modo più rapido e sporco per cancellare le informazioni sugli slave da un'istanza di MySQL

  • Aggiungi skip-slave-starta /etc/my.cnf sotto[mysqld]
  • service mysql stop
  • rm -f /var/lib/mysql/master.info /var/lib/mysql/relay-*
  • service mysql start
  • Rimuovi skip-slave-startda /etc/my.cnf

Questo dovrebbe farlo per te !!!

Ciò sarebbe necessario perché secondo la documentazione MySQL suRESET SLAVE :

In MySQL 5.5 (diversamente dal caso in MySQL 5.1 e precedenti), RESET SLAVE non modifica alcun parametro di connessione di replica come host principale, porta principale, utente principale o password principale, che viene conservato in memoria. Ciò significa che START SLAVE può essere emesso senza richiedere un'istruzione CHANGE MASTER TO dopo RESET SLAVE.

Pertanto, le informazioni sulla replica sono ancora in memoria. Un riavvio mysql è l'unica strada da percorrere.


Grazie @Rolando. +1 L'ho visto ma non l'ho provato. Sto cercando di non dover riavviare mysqld per risolvere questo problema.
Grigio - COSÌ smetti di essere malvagio il

Inoltre, non vedo alcun master.infofile. C'è sempre un "padrone" o uno "schiavo"?
Grigio - COSÌ smetti di essere malvagio il

master.info è sempre su Slave Server.
Abdul Manaf,

5

RESET SLAVEseguito da un riavvio non cancella le informazioni sullo slave per quanto riguarda phpmyadmin. Devi anche impostare CHANGE MASTER TO MASTER_HOST=''.


3

Consiglierei di mantenere il comando skip-slave-start nel tuo file di configurazione ('in /etc/my.cnf') sotto il tuo 'mysqld' per evitare l'override dei dati master-slave. Per fare un esempio: quando si lavora in un ambiente cloud, si supponga che un vecchio master si arresti in modo anomalo e si riavvii correttamente quando il provider risolve qualsiasi problema: il vecchio slave (ora nuovo master) si replicherà dal vecchio master, ignorando i dati prima il DBA ha la possibilità di realizzarlo.

A proposito, questo è rilevante anche in un ambiente non cloud. Se, diciamo, un altro amministratore fa apparire il vecchio maestro senza coordinarsi. Inoltre, un altro problema è una buona idea mantenere il comando 'skip-slave-start' anche se è uno slave - nessuna replica automatica, il che significa che hai un maggiore controllo sulla prevenzione di risultati imprevedibili. :)


Grazie per la risposta @Lena. Questa è una buona idea. Ci penserò.
Grigio - COSÌ smetti di essere malvagio il
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.