Come disabilitare completamente la replica di MySQL


64

Sto eseguendo la replica MySQL dual master e ora voglio passare a un singolo database senza replica. Come disabilitare completamente la replica su entrambi i database?

Risposte:


81

Per disabilitare completamente la replica con un'impostazione master-master, è necessario eseguire le seguenti operazioni su ogni slave:

  1. STOP SLAVE;
  2. RESET SLAVE;(Utilizzare RESET SLAVE ALL;per MySQL 5.5.16 e versioni successive)
  3. Modifica my.cnf e rimuovi qualsiasi informazione (se presente) che faccia riferimento alle opzioni "master -..." o "replicate -...". Potresti non avere nulla in my.cnf, poiché anche la replica può essere impostata in modo dinamico.
  4. Riavvia mysqld.

se la replica viene impostata in modo dinamico, i passaggi 1 e 2 dovrebbero essere sufficienti.
Tanyehzheng,

4
Fino al riavvio di MySQL, riporterà le informazioni di replica precedenti sulle SLAVE STATUSquery anche dopo che RESET SLAVEè stato dato il comando. Importante da sapere per il monitoraggio o gli strumenti di gestione della configurazione remota. Comportamento confermato con MySQL 5.5.38 su CentOS 6.5.
Chris Laskey,

Faccio i passi ma perché quello slave inattivo è ancora nella lista dei comandi mtop? Come rimuoverlo dall'elenco?
Scott Chu,

18

So che questa è una vecchia domanda, ma ho scoperto che devo anche ripristinare le variabili slave. Se usi "blah" come suggerito, il server proverà all'avvio per trovare il server "blah".

Cambia MASTERinMASTER_HOST='',MASTER_USER='',MASTER_PASSWORD='';

È possibile verificare che la macchina non sia più uno schiavo

SHOW SLAVE STATUS \G;

5
Questo non funziona più. L'impostazione CHANGE MASTER TO MASTER_HOST=''ora genera un errore.
Gray,

ERRORE 1210 (HY000): Argomenti errati per MASTER_HOST
Kazimieras Aliulis,

Funziona per me su CentOS 6 (MySQL 5.1), dopo questo SHOW SLAVE STATUS restituisce un set vuoto, mentre dopo un RESET SLAVE mostra ancora alcune informazioni principali.
Martijn,

Questa risposta è ancora valida per gli utenti di MySQL 5.1 (potrebbe esserci ancora là fuori).
RolandoMySQLDBA,

12

Sui server slave:

  1. Eseguire "stop slave" per interrompere la replica.
  2. Eseguire "reset slave" per dire al server slave di dimenticare la sua posizione nel registro binario recuperato dal server principale.
  3. Aggiungi "skip-slave-start" a my.cnf per impedire l'avvio della replica quando riavvii MySQL.

Non è necessario riavviare MySQL sul master o sullo slave. La documentazione completa è disponibile nella sezione 19 del Manuale di riferimento di MySQL .

Ti consiglio di lasciare il resto delle impostazioni di replica in atto nel caso in cui decidi di ripristinare la configurazione precedente. In questo modo dovresti solo spingere i dati e ripristinare la posizione dello slave (non dimenticare di rimuovere skip-slave-start) piuttosto che ricreare l'intero tessuto di installazione.


7

Indipendentemente dalla versione di MySQL, il modo più completo per farlo è il seguente

cd /var/lib/mysql
service mysql stop
rm -f master.info relay-*`
service mysql start

Questo deve funzionare per la sua ultima versione perché l'impostazione di replica è ancora presente nella RAM per MySQL 5.5.

Ho appena risposto a una domanda simile su questo argomento: Come modificare uno slave precedente MySQL in modo che diventi un master e rimuova le informazioni sullo stato degli slave?


6

La modifica del solo file my.cnf non è sufficiente per disabilitare la replica. In realtà, non è più il modo raccomandato per abilitarlo. Inserire le voci nel file my.cnf è efficace solo per il prossimo avvio e si comporta come se tu avessi inserito il comando nel client mysql:

mysql> cambia master in master_host = 'blah', master_user = 'blah', master_password = 'blah' ...;

Entrambi questi metodi creeranno un file nella directory dei dati chiamato master.info . Finché esiste questo file, il server proverà a replicarsi utilizzando i dettagli lì. "RESET SLAVE;" il comando elencato nella prima risposta eliminerà il file master.info (così come il file relay-log.info ). Come indicato nella prima risposta, si desidera anche assicurarsi di non disporre di tali informazioni di configurazione nel file my.cnf, altrimenti al successivo riavvio del server, la registrazione verrà riattivata.


5

Una risposta è qui:

http://www.oops.net.br/~bac/bam/canopy_repl_setup.htm

* Modifica il file di configurazione di MySQL: /etc/my.cnf e rimuovi le seguenti 7 righe nella sezione intitolata [mysqld]:

port=3306
log-bin
server-id=1
master-host=10.0.0.2
master-user=server_1_repl
master-password=server_1_passwd
master-port=3306*

Riavvia MySQL.


4

Sto aggiungendo questo alla risposta di Harrison Fisk:

Se è stato utilizzato, il RESET SLAVE ALL;riavvio non è necessario.

Inoltre, potresti voler abilitare gli eventi che sono stati disabilitati sullo slave:

select * from information_schema.events where status = 'SLAVESIDE_DISABLED';

Per ciascuno di essi:

alter event <event_name> enable;
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.