3 Stimmen

Wie bringe ich MySQL dazu, my.cnf erneut zu lesen, ohne neu zu starten?

Gibt es einen solchen Befehl?

Ich habe my.cnf geändert, und ich möchte MySQL nicht stoppen/starten.

3voto

jochil Punkte 1064

Soweit ich weiß, müssen Sie Ihren MySQL-Server neu starten, aber es gibt einige Konfigurationsvariablen, die ohne Neustart geändert werden können: dynamische Systemvariablen

3voto

Tim Post Punkte 32750

Was POSIX anbelangt, SIGHUP (das normalerweise einem Programm, das nach dem Start im Hintergrund läuft, mitteilt, dass es seine Konfiguration neu laden soll) löscht die Privilegien. Referenz aquí . Das ist auch gut so, denn wenn Sie den Dienst im Vordergrund ausführen und die Verbindung unterbrochen wird, möchten Sie wahrscheinlich, dass das passiert.

Damit bleibt uns SIGUSR(1 oder 2) die in der Vergangenheit bekannt für Abstürze den Dienst.

Kurz gesagt, begnügen Sie sich mit den zur Verfügung stehenden Mitteln :) Jedes Mal, wenn Sie es mit einem Dienst zu tun haben, der mehr als primitive IPC ist es eine gute Idee, den Dienst einfach neu zu starten, wenn Sie Konfigurationsänderungen vornehmen. Viele laufende Threads müssen ihre Arbeit abschließen, sterben und neu geboren werden. Ein weiterer Wettlauf zu einer gegenseitigen exklusiven Sperre würde mehr Zeit in Anspruch nehmen als ein einfacher Neustart, da jeder laufende Thread sein Verhalten und sein Verständnis des Universums ändern müsste. in situ . Das führt schnell zum Stillstand und zu einem Zombie-Elternteil.

Beachten Sie, dass die meisten RDBMS ihre eigene Pufferung verwenden, die bei den meisten anderen Diensten vom Kernel übernommen wird. Sie können einen Thread nicht einfach auffordern, Spanisch zu sprechen, wenn er früher Englisch gesprochen hat, oder umgekehrt, je nachdem, was Sie in der Konfiguration geändert haben.

Zumindest nicht, ohne das Elternteil zu reinkarnieren also einfach neu anfangen.

0voto

Erik Osterman Punkte 559

Installieren Sie das RubyGem mysql_manager ( sudo gem install mysql_manager ) und führen Sie dann den Befehl aus:

mysql-manager --reload-my-cnf --reload-my-cnf:config /etc/my.cnf --log:level DEBUG

Für weitere Optionen, führen Sie mysql-manager --help .

Möglicherweise müssen Sie eine Alternative angeben --db:dsn , --db:username , oder --db:password .

Lesen Sie hier mehr darüber: https://github.com/osterman/mysql_manager

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X