使用 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表。

相關內容