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.