Mysql
 sql >> Database >  >> RDS >> Mysql

ottenere Connessione persa a mysql quando si utilizza mysqldump anche con il parametro max_allowed_packet

Prova ad aggiungere il --quick opzione al tuo mysqldump comando; funziona meglio con tavoli grandi. Trasmette le righe dal set di risultati all'output invece di eseguire lo slurping dell'intera tabella, quindi scriverla.

 mysqldump -uroot -h my.host -p'mypassword' --quick --max_allowed_packet=512M db_name table_name | \
 gzip  > dump_test.sql.gz

Puoi anche provare ad aggiungere il --compress opzione al tuo comando mysqldump. Ciò fa sì che utilizzi il protocollo di connessione compresso più adatto alla rete per il tuo server MySQL. Nota che hai ancora bisogno di gzip tubo; Il protocollo compresso di MySQL non fa uscire il dump da mysqldump compresso.

È anche possibile che il server stia interrompendo la sua connessione a mysqldump cliente. Puoi provare a reimpostare le durate di timeout. Collegati al tuo server con altri mezzi ed emetti queste query, quindi esegui il tuo mysqldump lavoro.

Questi impostano i timeout su un giorno di calendario.

    SET GLOBAL wait_timeout=86400;
    SET GLOBAL interactive_timeout=86400;

Infine, se il tuo server è lontano dalla tua macchina (attraverso router e firewall) qualcosa potrebbe interrompere mysqldump la connessione. Alcuni router e firewall di qualità inferiore hanno limiti di tempo per le sessioni NAT (traduzione dell'indirizzo di rete). Dovrebbero mantenere in vita quelle sessioni mentre sono in uso, ma alcuni no. O forse stai raggiungendo un limite di tempo o dimensione configurato dalla tua azienda per le connessioni esterne.

Prova ad accedere a una macchina più vicina al server e ad eseguire mysqldump su di esso. Quindi usa qualche altro mezzo (sftp?) Per copiare il tuo file gz sulla tua macchina.

Oppure potresti dover segmentare il dump di questo file. Puoi fare qualcosa del genere (non sottoposto a debug).

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....

Quindi ripeti con queste righe.

          --where="id>=1000000 AND id < 2000000" | \

          --where="id>=2000000 AND id < 3000000" | \
          ...

finché non ottieni tutte le righe. Dolore al collo, ma funzionerà.