Mysql
 sql >> база данни >  >> RDS >> Mysql

загуба на връзка с mysql при използване на mysqldump дори с параметър max_allowed_packet

Опитайте да добавите --quick опция за вашия mysqldump команда; работи по-добре с големи маси. Той предава поточно редовете от набора от резултати към изхода, вместо да изхрипва цялата таблица, след което да я изписва.

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

Можете също да опитате да добавите --compress опция за вашата команда mysqldump. Това го кара да използва по-удобния за мрежата компресиран протокол за връзка към вашия MySQL сървър. Забележете, че все още имате нужда от gzip тръба; Компресираният протокол на MySQL не води до извеждането на дъмп от mysqldump компресиран.

Възможно е също така сървърът да изтече времето на връзката си с mysqldump клиент. Можете да опитате да нулирате продължителността на изчакването. Свържете се с вашия сървър чрез други средства и издайте тези заявки, след което стартирайте вашия mysqldump работа.

Те задават изчакванията на един календарен ден.

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

И накрая, ако вашият сървър е далеч от вашата машина (чрез рутери и защитни стени), нещо може да нарушава mysqldump връзка на. Някои по-ниски рутери и защитни стени имат времеви ограничения за NAT (превод на мрежов адрес) сесии. Те трябва да поддържат тези сесии живи, докато се използват, но някои не го правят. Или може би достигате ограничение за време или размер, конфигурирано от вашата компания за външни връзки.

Опитайте да влезете в машина по-близо до сървъра и да стартирате mysqldump върху него. След това използвайте други средства (sftp?), за да копирате вашия gz файл на вашата собствена машина.

Или може да се наложи да сегментирате дъмпа на този файл. Можете да направите нещо подобно (не е отстранено).

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

След това повторете това с тези редове.

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

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

докато получите всички редове. Болка във врата, но ще свърши работа.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да добавя първичен ключ към MySQL таблица?

  2. MySQL:Код на грешка:1118 Размерът на ред е твърде голям (> 8126). Промяна на някои колони на TEXT или BLOB

  3. Функция MySQL SIGN() – Разберете дали числото е положително или отрицателно в MySQL

  4. Синтаксис на SQL DELETE – изброен от СУБД

  5. Как да добавите уникален ключ към съществуваща таблица (с редове, които не са уникални)