Page 1 of 1

"flush tables with read lock" per Bash-Shell von einem anderen Host

Posted: 2008-09-29 01:07
by sierra
Hallo,

ich möchte gerne den oben genannten MySQL-Befehl von einer anderen Host per SSH-Command senden. Folgende Code-Zeilen habe ich mir überlegt:

ssh $domu_ip "mysql -u$mysql_user -p$mysql_pw -e "FLUSH TABLES WITH READ LOCK""

domu_ip="IP-Adresse des Zielhosts"
mysql_user="root"
mysql_pw="mysqlrootpw"

Leider habe ich folgendes gelesen:
http://209.85.135.104/search?q=cache:Co ... =firefox-a
Dieses Lock ist global über alle Datenbanken.

mysql> flush tables with read lock;


Es ist wichtig diese Session offen zu halten, da beim Beenden der Session das Lock sofort entfernt wird. Deshalb schieben wir den Prozess einfach in den Hintergrund.

[Press ctrl-z]
Dann scheint wohl meine Version nicht zu funktionieren, da ja nur ein MySQL Befehl abgesendet wird und die Session so nicht offen bleibt.

Hat jemand eine andere Idee? Wie kann ich testen, ob der Lock derzeit noch aktiv ist bzw. funktioniert?


Gruss,

Sierra

Re: "flush tables with read lock" per Bash-Shell von einem anderen Host

Posted: 2008-09-29 12:38
by EdRoxter
Probier's mit screen.

Da ich selbst damit nicht arbeite, kann ich dir leider aus dem Kopf nicht sagen, was genau du tun musst, aber du könntest den mysql-Prozess in einer screen-Session starten und detachen. Das Schöne an screen ist nämlich, dass die screen-Session erhalten bleibt, wenn du die SSH-Session beendest.
Wird zwar etwas Fummelei da später per Script wieder dran zu kommen, aber auch das geht - da ich selbst nicht mit screen arbeite, kann ich dir nur leider nicht sagen, wie. Aber eine Google-Suche und die manpages helfen dir sicher schonmal ein gutes Stück weiter.

Re: "flush tables with read lock" per Bash-Shell von einem anderen Host

Posted: 2008-09-29 13:44
by Joe User
Als Alternative zu Screen kannst Du den MySQL-Befehl auch in ein Script (chmod 0700) packen und dieses auf dem Zielhost per nohup starten. Hat den Vorteil, dass das Passwort nicht im Klartext in ps und Co auftaucht und benötigt keine extra Software wie Screen.

Re: "flush tables with read lock" per Bash-Shell von einem anderen Host

Posted: 2008-09-29 14:44
by oxygen
In 95% Fälle reicht es auch wie in dem Artikel beschrieben, den Schritt mit dem Global Lock zu überspringen.

Re: "flush tables with read lock" per Bash-Shell von einem anderen Host

Posted: 2008-09-30 07:30
by sierra
Hallo,

vielen Dank für die Antworten. Ich glaube das mit nohup ist das was ich suche.

Jeztt noch eine letzte Frage: Wie kann ich testen, ob der Read Lock noch an ist? Bringt MySQL dann einen Fehler, wenn eine Datenbank z.B. über den Apachen aufrufen wird? Welchen Fehler sollte er dann bringen?