Zkuste přidat --quick
možnost do vašeho mysqldump
příkaz; lépe to funguje u velkých stolů. Streamuje řádky z výsledkové sady na výstup místo toho, aby celou tabulku rozložil a poté ji vypsal.
mysqldump -uroot -h my.host -p'mypassword' --quick --max_allowed_packet=512M db_name table_name | \
gzip > dump_test.sql.gz
Můžete také zkusit přidat --compress
možnost vašeho příkazu mysqldump. Díky tomu používá komprimovaný protokol připojení k vašemu serveru MySQL, který je přívětivější k síti. Všimněte si, že stále potřebujete gzip
trubka; Komprimovaný protokol MySQL nezpůsobuje výpis výpisu z mysqldump
komprimovaný.
Je také možné, že serveru vypršel časový limit připojení k mysqldump
klienta. Můžete zkusit resetovat doby trvání časového limitu. Připojte se k serveru pomocí jiných prostředků a zadejte tyto dotazy, poté spusťte mysqldump
práce.
Ty nastavují časové limity na jeden kalendářní den.
SET GLOBAL wait_timeout=86400;
SET GLOBAL interactive_timeout=86400;
A konečně, pokud je váš server daleko od vašeho počítače (přes routery a firewally), něco může rušit mysqldump
's připojení. Některé podřadné směrovače a firewally mají časové limity na relace NAT (překlad síťových adres). Předpokládá se, že udrží ty relace naživu, když se používají, ale některé ne. Nebo možná narážíte na časový nebo velikostní limit nakonfigurovaný vaší společností pro externí připojení.
Zkuste se přihlásit do počítače blíže k serveru a spustit mysqldump
Pak použijte nějaké jiné prostředky (sftp?) ke zkopírování souboru gz na svůj vlastní počítač.
Nebo možná budete muset segmentovat výpis tohoto souboru. Můžete udělat něco takového (neodladěno).
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....
Potom to zopakujte s těmito řádky.
--where="id>=1000000 AND id < 2000000" | \
--where="id>=2000000 AND id < 3000000" | \
...
dokud nezískáte všechny řádky. Bolest v krku, ale půjde to.