sql >> Databáze >  >> RDS >> Mysql

získání Ztráta připojení k mysql při použití mysqldump i s parametrem max_allowed_packet

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.



  1. Seznam všech spouštěčů v databázi Oracle

  2. Najděte duplicitní záznamy v MySQL

  3. Význam délky varchar v tabulce MySQL

  4. MySQL Funkce COT() – Vrátí kotangens čísla v MySQL