sql >> Base de Datos >  >> RDS >> Mysql

obtener conexión perdida a mysql cuando se usa mysqldump incluso con el parámetro max_allowed_packet

Intente agregar --quick opción a su mysqldump dominio; funciona mejor con mesas grandes. Transmite las filas del conjunto de resultados a la salida en lugar de sorber toda la tabla y luego escribirla.

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

También puede intentar agregar --compress opción a su comando mysqldump. Eso hace que use el protocolo de conexión comprimido más amigable con la red a su servidor MySQL. Tenga en cuenta que aún necesita el gzip tubo; El protocolo comprimido de MySQL no hace que el volcado salga de mysqldump comprimido.

También es posible que el servidor esté agotando el tiempo de su conexión con mysqldump cliente. Puede intentar restablecer la duración del tiempo de espera. Conéctese a su servidor a través de otros medios y emita estas consultas, luego ejecute su mysqldump trabajo.

Estos establecen los tiempos de espera en un día calendario.

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

Finalmente, si su servidor está lejos de su máquina (a través de enrutadores y cortafuegos), algo puede estar interrumpiendo mysqldump conexión de . Algunos enrutadores y cortafuegos inferiores tienen límites de tiempo en las sesiones NAT (traducción de direcciones de red). Se supone que deben mantener activas esas sesiones mientras están en uso, pero algunas no lo hacen. O tal vez esté alcanzando un límite de tiempo o tamaño configurado por su empresa para conexiones externas.

Intente iniciar sesión en una máquina más cercana al servidor y ejecute mysqldump en él. Luego use algún otro medio (¿sftp?) Para copiar su archivo gz a su propia máquina.

O bien, puede que tenga que segmentar el volcado de este archivo. Puedes hacer algo como esto (no 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....

Luego repite eso con estas líneas.

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

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

hasta obtener todas las filas. Dolor en el cuello, pero funcionará.