Tente adicionar o
--quick
opção para o seu mysqldump
comando; funciona melhor com mesas grandes. Ele transmite as linhas do conjunto de resultados para a saída, em vez de absorver a tabela inteira e, em seguida, escrevê-la. mysqldump -uroot -h my.host -p'mypassword' --quick --max_allowed_packet=512M db_name table_name | \
gzip > dump_test.sql.gz
Você também pode tentar adicionar o
--compress
opção para o seu comando mysqldump. Isso faz com que ele use o protocolo de conexão compactado mais amigável à rede para seu servidor MySQL. Observe que você ainda precisa do gzip
tubo; O protocolo compactado do MySQL não faz com que o dump saia do mysqldump
comprimido. Também é possível que o servidor esteja expirando sua conexão com o
mysqldump
cliente. Você pode tentar redefinir as durações do tempo limite. Conecte-se ao seu servidor por outros meios e emita essas consultas, depois execute seu mysqldump
trabalho. Estes definem os tempos limite para um dia de calendário.
SET GLOBAL wait_timeout=86400;
SET GLOBAL interactive_timeout=86400;
Finalmente, se seu servidor estiver longe de sua máquina (através de roteadores e firewalls), algo pode estar atrapalhando o
mysqldump
conexão. Alguns roteadores e firewalls inferiores têm limites de tempo nas sessões NAT (tradução de endereço de rede). Eles deveriam manter essas sessões vivas enquanto estão em uso, mas algumas não. Ou talvez você esteja atingindo um limite de tempo ou tamanho configurado por sua empresa para conexões externas. Tente fazer login em uma máquina mais próxima do servidor e executar
mysqldump
nele. Em seguida, use algum outro meio (sftp?) para copiar seu arquivo gz para sua própria máquina. Ou talvez seja necessário segmentar o despejo desse arquivo. Você pode fazer algo assim (não depurado).
mysqldump -uroot -h my.host -p'mypassword' \
db_name table_name --skip-create-options --skip-add-drop-table \
--where="id>=0 AND id < 1000000" | \
gzip....
Em seguida, repita isso com essas linhas.
--where="id>=1000000 AND id < 2000000" | \
--where="id>=2000000 AND id < 3000000" | \
...
até obter todas as linhas. Dor no pescoço, mas vai funcionar.