sshでリモートコマンドを実行すると、他のすべてのネットワークアクティビティがハングアップするようです

sshでリモートコマンドを実行すると、他のすべてのネットワークアクティビティがハングアップするようです

リモート マシンから MySQL データベースをバックアップするために、次のコマンドを実行しています。

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

コマンドの時間を計ってみたところ、約 2.5 ~ 3 分かかるようです。問題なく動作するようです。

しかし問題は、リモート サーバー上の他のすべてのネットワーク トラフィックが中断されているように見えることです。

リモート サーバーには「彗星」のような http 接続 (長時間開いたままになる接続) があり、それらの接続は停止しているようです。また、開いたままになっている他の TCP 接続もあり、上記の ssh コマンドが終了した時点で切断されるようです (少なくとも ssh コマンドが停止するとログ メッセージは表示されますが、それより前にデータが転送されていないと思われます)。

答え1

データベースがロックされています

質問では「リモート サーバー上の他のすべてのネットワーク トラフィックが中断されているようです」と説明されていますが、データベース ダンプが (すべての) Innodb テーブルをロックしている可能性の方がはるかに高いです。

このシナリオでは、ロックされたテーブルへの読み取り/書き込みを行うすべてのプロセスは、ダンプが完了するまで待機し、その後、プロセス自体がロックを取得し、データベースへの読み取り/書き込みを行って、リクエストを完了します。すべての http トラフィックがデータベースへの読み取り/書き込みを必要とする場合、すべての http トラフィックがブロックされているように見えます。

ロックの防止

Mysqldumpは、--単一トランザクションフラグはmysqldumpにないテーブルをロックしますinnodb

関連情報