Coba tambahkan --quick
opsi untuk mysqldump
Anda memerintah; ini bekerja lebih baik dengan tabel besar. Ini mengalirkan baris dari resultet ke output daripada menyeruput seluruh tabel, lalu menuliskannya.
mysqldump -uroot -h my.host -p'mypassword' --quick --max_allowed_packet=512M db_name table_name | \
gzip > dump_test.sql.gz
Anda juga dapat mencoba menambahkan --compress
opsi untuk perintah mysqldump Anda. Itu membuatnya menggunakan protokol koneksi terkompresi yang lebih ramah jaringan ke server MySQL Anda. Perhatikan bahwa Anda masih memerlukan gzip
pipa; Protokol terkompresi MySQL tidak menyebabkan dump keluar dari mysqldump
terkompresi.
Mungkin juga server mengatur waktu koneksinya ke mysqldump
klien. Anda dapat mencoba mengatur ulang durasi timeout. Hubungkan ke server Anda melalui beberapa cara lain dan keluarkan kueri ini, lalu jalankan mysqldump
Anda pekerjaan.
Ini mengatur batas waktu menjadi satu hari kalender.
SET GLOBAL wait_timeout=86400;
SET GLOBAL interactive_timeout=86400;
Terakhir, jika server Anda jauh dari mesin Anda (melalui router dan firewall) mungkin ada sesuatu yang mengganggu mysqldump
koneksi. Beberapa router dan firewall inferior memiliki batas waktu pada sesi NAT (translasi alamat jaringan). Mereka seharusnya menjaga sesi tersebut tetap hidup saat sedang digunakan, tetapi beberapa tidak. Atau mungkin Anda mencapai batas waktu atau ukuran yang dikonfigurasi oleh perusahaan Anda untuk koneksi eksternal.
Coba masuk ke mesin yang lebih dekat ke server dan jalankan mysqldump
di atasnya. Kemudian gunakan beberapa cara lain (sftp?) untuk menyalin file gz Anda ke mesin Anda sendiri.
Atau, Anda mungkin harus mengelompokkan dump file ini. Anda dapat melakukan sesuatu seperti ini (tidak di-debug).
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....
Kemudian ulangi dengan baris ini.
--where="id>=1000000 AND id < 2000000" | \
--where="id>=2000000 AND id < 3000000" | \
...
sampai Anda mendapatkan semua baris. Sakit di leher, tapi itu akan berhasil.