Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Utracone połączenie z mysql podczas korzystania z mysqldump nawet z parametrem max_allowed_packet

Spróbuj dodać --quick opcja do twojego mysqldump Komenda; działa lepiej z dużymi stołami. Przesyła wiersze ze zbioru wyników do danych wyjściowych, zamiast siorbać całą tabelę, a następnie ją wypisywać.

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

Możesz także spróbować dodać --compress opcja do twojego polecenia mysqldump. To sprawia, że ​​używa bardziej przyjaznego dla sieci protokołu skompresowanego połączenia z serwerem MySQL. Zauważ, że nadal potrzebujesz gzip rura; Skompresowany protokół MySQL nie powoduje, że zrzut wychodzi z mysqldump skompresowany.

Możliwe jest również, że serwer przekracza limit czasu połączenia z mysqldump klient. Możesz spróbować zresetować limity czasu. Połącz się ze swoim serwerem w inny sposób i wyślij te zapytania, a następnie uruchom mysqldump praca.

Ustawiają one limity czasu na jeden dzień kalendarzowy.

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

Wreszcie, jeśli twój serwer jest daleko od twojego komputera (przez routery i zapory), coś może zakłócać działanie mysqldump połączenie. Niektóre słabsze routery i zapory sieciowe mają ograniczenia czasowe dotyczące sesji NAT (translacji adresów sieciowych). Mają utrzymywać te sesje przy życiu, gdy są w użyciu, ale niektórzy tego nie robią. A może zbliżasz się do limitu czasu lub rozmiaru skonfigurowanego przez Twoją firmę dla połączeń zewnętrznych.

Spróbuj zalogować się na maszynę bliżej serwera i uruchomić mysqldump na nim. Następnie użyj innych środków (sftp?), aby skopiować plik gz na własny komputer.

Lub może być konieczne segmentowanie zrzutu tego pliku. Możesz zrobić coś takiego (nie debugować).

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

Następnie powtórz to z tymi wierszami.

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

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

dopóki nie zdobędziesz wszystkich wierszy. Ból szyi, ale zadziała.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tabela błędów Mysql 1050 już istnieje, podczas gdy w rzeczywistości tak nie jest

  2. Hasło roota mysql homebrew w systemie MacOSX

  3. Rekurencyjna funkcja PHP do usuwania wszystkich węzłów podrzędnych powoduje przepełnienie stosu

  4. Pobieranie PDO w PHP ma wartość null

  5. Tabela MySQL jest oznaczona jako uszkodzona i ostatnia (automatyczna?) naprawa nie powiodła się