Das Ausführen eines Remote-Befehls mit SSH scheint alle anderen Netzwerkaktivitäten zum Stillstand zu bringen

Das Ausführen eines Remote-Befehls mit SSH scheint alle anderen Netzwerkaktivitäten zum Stillstand zu bringen

Ich führe den folgenden Befehl aus, um eine MySQL-Datenbank von einem Remotecomputer zu sichern:

ssh [email protected] 'mysqldump mainserver' | gzip -c > mainserver.sql.gz

Ich habe die Zeit für den Befehl gemessen und es scheint, als würde er etwa 2,5 bis 3 Minuten dauern. Es scheint ohne Probleme zu funktionieren.

Das Problem besteht jedoch darin, dass der gesamte andere Netzwerkverkehr auf dem Remote-Server unterbrochen zu sein scheint.

Der Remote-Server verfügt über HTTP-Verbindungen im „Comet“-Stil (Verbindungen, die über einen längeren Zeitraum offen bleiben) und diese Verbindungen scheinen zu stoppen. Es gibt auch andere TCP-Verbindungen, die offen gehalten werden und die genau an dem Punkt getrennt zu werden scheinen, an dem der obige SSH-Befehl endet. (Zumindest erscheinen die Protokollmeldungen, wenn der SSH-Befehl endet, aber ich vermute, dass vorher keine Daten übertragen werden).

Antwort1

Die Datenbank ist gesperrt

Obwohl es in der Frage so beschrieben wird: „Der gesamte übrige Netzwerkverkehr auf dem Remote-Server scheint unterbrochen zu sein“, ist es viel wahrscheinlicher, dass der Datenbank-Dump (alle) InnoDB-Tabellen sperrt.

In diesem Szenario wartet jeder Prozess, der gesperrte Tabellen liest/schreibt, bis der Dump abgeschlossen ist, bevor er selbst eine Sperre erhalten, in der Datenbank lesen/schreiben und die Anfrage abschließen kann. Wenn der gesamte HTTP-Verkehr in der Datenbank lesen/schreiben muss, würde dies den Eindruck erwecken, dass der gesamte HTTP-Verkehr blockiert ist.

Sperren verhindern

Mysqldump bietet die--single-transactionFlag, das mysqldump erlaubt,nichtTabellen sperren innodb.

verwandte Informationen