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

mister forbindelsen til mysql, når du bruger mysqldump, selv med parameteren max_allowed_packet

Prøv at tilføje --quick mulighed for din mysqldump kommando; det fungerer bedre med store borde. Det streamer rækkerne fra resultatsættet til outputtet i stedet for at slurre hele tabellen og derefter skrive det ud.

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

Du kan også prøve at tilføje --compress mulighed for din mysqldump-kommando. Det får den til at bruge den mere netværksvenlige komprimerede forbindelsesprotokol til din MySQL-server. Bemærk, at du stadig har brug for gzip rør; MySQL's komprimerede protokol får ikke dumpet til at komme ud af mysqldump komprimeret.

Det er også muligt, at serveren timeout sin forbindelse til mysqldump klient. Du kan prøve at nulstille timeout-varighederne. Opret forbindelse til din server via en anden måde og udsted disse forespørgsler, kør derefter din mysqldump job.

Disse indstiller timeouts til én kalenderdag.

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

Endelig, hvis din server er langt væk fra din maskine (via routere og firewalls), kan der være noget, der forstyrrer mysqldump 's forbindelse. Nogle ringere routere og firewalls har tidsbegrænsninger på NAT-sessioner (netværksadresseoversættelse). Det er meningen, at de skal holde disse sessioner i live, mens de er i brug, men nogle gør ikke. Eller måske rammer du en tids- eller størrelsesgrænse, som din virksomhed har konfigureret til eksterne forbindelser.

Prøv at logge ind på en maskine tættere på serveren og kør mysqldump Brug så nogle andre midler (sftp?) til at kopiere din gz-fil til din egen maskine.

Eller du skal muligvis segmentere dumpet af denne fil. Du kan gøre sådan noget (ikke debugget).

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

Gentag derefter det med disse linjer.

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

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

indtil du får alle rækkerne. Smerter i nakken, men det vil virke.



  1. Håndtering af frødata i R12.2 online patching

  2. Sådan indstilles lokaliteten for den aktuelle forbindelse i MySQL

  3. Konfigurer Master-Master MySQL-databasereplikering

  4. Sådan tilføjer du en underformular til en formular i Access 2016