我正在运行以下命令从远程计算机备份一个mysql数据库:
ssh [email protected] 'mysqldump mainserver' | gzip -c > mainserver.sql.gz
我已经计时了这个命令,似乎需要2.5到3分钟。 这似乎没有问题。
但是,问题是远程服务器上的所有其他networkingstream量似乎中断。
远程服务器具有“彗星”式的http连接(连接长时间保持打开状态),这些连接似乎停止。 还有其他TCP连接保持打开状态,似乎在上述ssh命令完成的位置断开连接。 (至less在ssh命令停止时会出现日志消息,但是我怀疑没有数据正在被传输)。
虽然在问题中将其描述为“远程服务器上的所有其他networking通信似乎中断”,但数据库转储更有可能locking(全部)innodb表。
在这种情况下,读取/写入locking表的任何进程都将等待转储完成,然后才能获取锁本身,读/写数据库并完成请求。 如果所有的httpstream量都需要读取/写入数据库,则会导致所有httpstream量被阻塞。
mysqldump提供了–single-transaction标志,它允许mysqldump 不lockinginnodb表。