sql >> Databasteknik >  >> RDS >> Mysql

förlorar anslutningen till mysql när du använder mysqldump även med parametern max_allowed_packet

Prova att lägga till --quick alternativet till din mysqldump kommando; det fungerar bättre med stora bord. Den strömmar raderna från resultatuppsättningen till utdata istället för att slurpa hela tabellen och sedan skriva ut den.

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

Du kan också prova att lägga till --compress alternativet till ditt mysqldump-kommando. Det gör att den använder det mer nätverksvänliga komprimerade anslutningsprotokollet till din MySQL-server. Observera att du fortfarande behöver gzip rör; MySQL:s komprimerade protokoll gör inte att dumpen kommer ut från mysqldump komprimerad.

Det är också möjligt att servern tar timeout för sin anslutning till mysqldump klient. Du kan försöka återställa tidsgränsen. Anslut till din server på något annat sätt och skicka dessa frågor, kör sedan din mysqldump jobb.

Dessa ställer in timeouts till en kalenderdag.

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

Slutligen, om din server är långt borta från din maskin (via routrar och brandväggar) kan något störa mysqldump s anslutning. Vissa sämre routrar och brandväggar har tidsgränser för NAT-sessioner (nätverksadressöversättning). De är tänkta att hålla dessa sessioner vid liv medan de används, men vissa gör det inte. Eller så kanske du når en tids- eller storleksgräns som konfigurerats av ditt företag för externa anslutningar.

Försök att logga in på en maskin närmare servern och kör mysqldump Använd sedan något annat sätt (sftp?) för att kopiera din gz-fil till din egen maskin.

Eller så kanske du måste segmentera dumpen för den här filen. Du kan göra något sånt här (inte felsökt).

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

Upprepa sedan det med dessa rader.

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

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

tills du får alla rader. Ont i nacken, men det kommer att fungera.



  1. Hur man får åtkomst till PhpMyAdmin utan cPanel-inloggning

  2. Gruppera efter dataintervall

  3. SQL Server BIT Datatype – Ultimate Guide

  4. MySQL MOD() Funktion – Utför en Modulo Operation i MySQL