Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

kehilangan koneksi ke mysql saat menggunakan mysqldump bahkan dengan parameter max_allowed_packet

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.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara menyegarkan datagrid di WPF

  2. Bagaimana cara menyimpan output kueri MySQL ke file excel atau .txt?

  3. PHP :Fungsi tidak terdefinisi mysql_connect()

  4. MySQL 'Order By' - menyortir alfanumerik dengan benar

  5. MySQLSyntaxErrorException saat mencoba menjalankan PreparedStatement