使用 ssh 运行远程命令似乎会挂起所有其他网络活动

使用 ssh 运行远程命令似乎会挂起所有其他网络活动

我正在运行以下命令从远程机器备份 mysql 数据库:

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

我已经对命令进行了计时,它似乎需要大约 2.5 到 3 分钟。它似乎运行起来没有问题。

但问题是远程服务器上的所有其他网络流量似乎都中断了。

远程服务器有类似“comet”的 http 连接(保持打开状态很长一段时间的连接),这些连接似乎停止了。还有其他保持打开状态的 TCP 连接似乎在上述 ssh 命令完成时断开。(至少日志消息在 ssh 命令停止时出现,但我怀疑在此之前没有数据传输)。

答案1

数据库已被锁定

虽然问题中描述为“远程服务器上的所有其他网络流量似乎都被中断了”,但数据库转储锁定(所有)innodb 表的可能性更大。

在这种情况下,任何读取/写入锁定表的进程都将等待转储完成,然后才能获得锁定,读取/写入数据库并完成请求。如果所有 http 流量都需要读取/写入数据库,这将给人一种所有 http 流量都被阻止的感觉。

防止锁定

Mysqldump 提供--单笔交易标志,允许 mysqldump不是锁定innodb表。

相关内容