Попробуйте добавить опцию --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" | \
...
пока вы не получите все строки. Боль в шее, но это сработает.