Ricarica my.cnf senza riavviare il servizio MySQL


26

Devo configurare un server MySQL per fungere da master della replica.

Ho modificato my.cnf per attivare i registri binari, ma ora per ricaricare la configurazione devo ricaricare il servizio /etc/init.d/mysqld restart. Il problema è che il server riceve diverse query al secondo e non voglio perdere tutti i dati che potrebbero arrivare nel frattempo.

Esiste un modo per ricaricare il file di configurazione my.cnf senza riavviare il servizio?


3
/etc/init.d/restartriavvierebbe l'intero host. Probabilmente stai pensando/etc/init.d/mysqld restart
Kevin M,

Sì, mento mysqld restart. Modificato. Grazie!
David Espart,

Risposte:


28

In particolare MySQL:
le opzioni in my.cnf sono variabili di sistema . Queste variabili sono dinamiche (possono essere modificate in fase di esecuzione) o non dinamiche. Quelli che sono dinamici, possono essere modificati in fase di esecuzione con la sintassi della variabile SET. Puoi vedere le variabili con SHOW VARIABLES;. Ma secondo questo link nel manuale , l'opzione del registro binario non è dinamica. Quindi sembra che devi riavviare. Potresti voler aspettare qualcuno che conosca mysql un po 'meglio di me per confermarlo comunque.

Demoni in generale:
in Linux, /etc/init.d/ contiene script che avviano e fermano i demoni (servizi). Poiché si tratta di script, è possibile visualizzarli con un editor di testo. Molti di questi script prenderanno un argomento di ricarica. Guardando il mio script mysql, ricaricare come argomento usa il comando mysqladmin. Quindi il manuale di mysqladmin sotto ricarica dice:

ricaricare

Reload the grant tables.

Quindi, in generale, non si tratta di modifiche alla configurazione, ma piuttosto di modifiche ai privilegi (forse il comando di svuotamento dei privilegi equivalente?).


2
Ehi, ottima spiegazione. Sembra però che non ci sia modo di farlo senza riavviare. Se nessuno risponde a una soluzione o a una soluzione alternativa, accetterò la tua domanda. Grazie.
David Espart,

Secondo il tuo link, sembra SET GLOBAL binlog_format = 'STATEMENT'; farebbe il trucco?
Kyle Smith,

Altro Kyle: Sembra così, ma penso che la registrazione binaria dovrebbe già essere abilitata per farlo per fare qualsiasi cosa (e forse essere impostata). Quella variabile è stata introdotta dopo la mia attuale versione 5.0.x di mysql, quindi non posso testarla.
Kyle Brandt,

Ho dovuto cercare la sintassi del comando SET - ecco un link nel caso in cui qualcun altro ne abbia bisogno: dev.mysql.com/doc/refman/5.1/en/set-option.html
Mark McDonald

4
Vale anche la pena ricordare quali variabili sono cambiamenti dinamici quando si verificano versioni di MySQL. Ad esempio in 5.x puoi abilitare il log delle query lente al volo, ma in 4.x non puoi (come ho scoperto ieri!).
Coops

1

ho cercato una soluzione per questo, ma non ero soddisfatto dell'aiuto limitato che ho trovato. Un tipo ha offerto un omicidio -HUP .. non ha funzionato per me ..

quello che ho fatto è stato mettere in pausa le istanze di Apache ... e poi continuare in seguito ... ha funzionato come un incantesimo su un server in cui ho una media di 25 richieste attive al secondo.

con sudo (ovviamente) pkill -STOP httpd && /etc/init.d/mysqld restart && pkill -CONT httpd

ofcourse il nome del processo apache e / o gli script di riavvio di mysql possono variare dal mio, ma hai capito bene!

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.