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.