Ich muss einen MySQL-Server als Replikationsmaster konfigurieren.
Ich habe my.cnf geändert, um binäre Protokolle zu aktivieren, aber um die Konfiguration neu zu laden, muss ich den Dienst mit neu laden /etc/init.d/mysqld restart
. Das Problem ist, dass der Server mehrere Anfragen pro Sekunde erhält und ich nicht alle Daten verlieren möchte, die in der Zwischenzeit eintreffen könnten.
Gibt es eine Möglichkeit, die Konfigurationsdatei my.cnf neu zu laden, ohne den Dienst neu zu starten?
mysql
replication
David Espart
quelle
quelle
/etc/init.d/restart
würde den ganzen Host neu starten. Sie denken wahrscheinlich an/etc/init.d/mysqld restart
Antworten:
Speziell MySQL:
Die Optionen in my.cnf sind Systemvariablen . Diese Variablen sind entweder dynamisch (können zur Laufzeit geändert werden) oder nicht dynamisch. Diejenigen, die dynamisch sind, können zur Laufzeit mit der SET-Variablensyntax geändert werden. Sie können die Variablen mit sehen
SHOW VARIABLES;
. Laut diesem Link im Handbuch ist die Option für das binäre Protokoll jedoch nicht dynamisch. Es sieht also so aus, als müssten Sie neu starten. Vielleicht möchten Sie warten, bis jemand, der sich mit MySQL etwas besser auskennt als ich, dies bestätigt.Daemons im Allgemeinen:
Unter Linux enthält /etc/init.d/ Skripts, mit denen Daemons (Dienste) gestartet und gestoppt werden. Da es sich um Skripte handelt, können Sie diese mit einem Texteditor anzeigen. Viele dieser Skripte benötigen ein Reload-Argument. Wenn Sie sich mein mysql-Skript ansehen, wird beim erneuten Laden als Argument der Befehl mysqladmin verwendet. So heißt es im Handbuch für mysqladmin unter reload:
Es sieht also im Allgemeinen so aus, als ob dies nicht für Konfigurationsänderungen gedacht ist, sondern für Änderungen der Berechtigungen (möglicherweise der entsprechende Befehl zum Löschen von Berechtigungen?).
quelle
Ich habe mich nach einer Lösung umgesehen, war aber nicht zufrieden mit der begrenzten Hilfe, die ich gefunden habe. Ein Kerl hat einen Kill angeboten -HUP .. hat bei mir nicht funktioniert ..
Was ich getan habe, war die Apache-Instanzen anzuhalten und später fortzusetzen. Hat wie ein Zauber auf einem Server funktioniert, auf dem ich durchschnittlich 25 aktive Anfragen pro Sekunde habe.
mit sudo (offensichtlich) pkill -STOP httpd && /etc/init.d/mysqld restart && pkill -CONT httpd
Natürlich können der Name Ihres Apache-Prozesses und / oder die Skripte für den Neustart von MySQL von meinen abweichen, aber Sie haben die richtige Vorstellung!
quelle