![executar um comando remoto com ssh parece interromper todas as outras atividades da rede](https://rvso.com/image/652656/executar%20um%20comando%20remoto%20com%20ssh%20parece%20interromper%20todas%20as%20outras%20atividades%20da%20rede.png)
Estou executando o seguinte comando para fazer backup de um banco de dados MySQL de uma máquina remota:
ssh [email protected] 'mysqldump mainserver' | gzip -c > mainserver.sql.gz
Cronometrei o comando e parece demorar cerca de 2,5 a 3 minutos. Parece funcionar sem problemas.
O problema, porém, é que todo o outro tráfego de rede no servidor remoto parece estar interrompido.
O servidor remoto possui conexões http do tipo "cometa" (conexões que permanecem abertas por um longo período) e essas conexões parecem parar. Existem também outras conexões TCP mantidas abertas que parecem se desconectar exatamente no ponto em que o comando ssh acima termina. (pelo menos as mensagens de log aparecem quando o comando ssh para, mas suspeito que nenhum dado esteja sendo transferido antes disso).
Responder1
O banco de dados está bloqueado
Embora seja descrito na pergunta como "todo o outro tráfego de rede no servidor remoto parece estar interrompido", é muito mais provável que o despejo do banco de dados bloqueie (todas) as tabelas innodb.
Neste cenário, qualquer processo de leitura/gravação em tabelas bloqueadas aguardará a conclusão do dump, antes de poder obter um bloqueio, ler/gravar no banco de dados e finalizar a solicitação. Se todo o tráfego http precisar ler/gravar no banco de dados, isso daria a percepção de que todo o tráfego http está bloqueado.
Prevenindo bloqueios
Mysqldump fornece o--transação únicaflag, que permite ao mysqldumpnãobloquear innodb
tabelas.