Saya memiliki basis data yang terinstal, yang ingin saya backup di mysql. Masalahnya adalah mysqldump
gagal mengekspor tabel 'maia_mail'
# mysqldump -u root -p maia > maia.sql
mysqldump: Error 2013: Lost connection to MySQL server during query when dumping table `maia_mail` at row: 15
Ini berjalan kurang dari 30 detik dan mendapatkan kesalahan seperti di atas.
Ukuran total DB adalah 1,3GB dengan tabel maia_mail 1,0GB
Di my.cnf
saya punya set ini:
[mysqld]
max_allowed_packet = 1300M
[mysqldump]
max_allowed_packet = 1300M
Mohon saran atau berikan panduan tentang cara membuang database?
Jawaban:
Saya bisa dengan mudah menyarankan untuk mengubah pengaturan InnoDB yang mungkin sedikit tangan hanya untuk mendapatkan mysqldump untuk bekerja. Anda mungkin tidak menyukai apa yang saya sarankan, tetapi saya percaya itu pilihan terbaik Anda (hanya). Ini dia:
SARAN # 1: Nonaktifkan sisipan yang diperluas
Pengaturan default untuk mysqldump akan mencakup penggabungan bersama ratusan atau ribuan baris dalam satu INSERT. Ini dikenal sebagai INSERT yang diperluas. Hal ini menyebabkan beberapa overrun sekedar max_allowed_packet .
Saya menjawab posting kembali
Sep 01, 2011
( server MySQL telah pergi menghalangi impor dump besar ) di mana saya membahas melakukan hal yang sama untuk mengimpor mysqldump besar. Saya percaya menonaktifkan INSERT yang diperluas akan membantu menciptakan mysqldump yang merepotkan juga.Berita buruk: Apa yang dilakukan ini dalam membuat perintah INSERT untuk setiap baris. Ini pasti akan menambah waktu yang diperlukan untuk melakukan mysqldump. Akibatnya, itu juga akan meningkat ke waktu yang diperlukan untuk memuat ulang (mungkin dengan faktor 10-100).
Saya sudah membahas
skip-extended-insert
sebelumnyaAug 12, 2011
: Mengapa file mysqldump begitu besar?Aug 09, 2013
: Backup / Ekspor data dari tabel lampiran MySQL 5.5 terus gagal!Nov 16, 2014
: Bagaimana cara membuat banyak pernyataan penyisipan untuk dump database dengan MySQL?SARAN # 2: Buang data biner sebagai hex (OPTIONAL)
Untuk membuat data biner mysqldump lebih portabel, buang data tersebut dalam heksadesimal
Berita Buruk: Ini akan menggembungkan mysqldump sedikit lagi
COBALAH !!!
Catatan Sisi: Ukuran maksimum max_allowed_packet adalah 1G
sumber
Saya juga mendapatkan kesalahan yang sama ketika mencoba untuk membuang basis data 12 GB. Saya melakukan perubahan berikut untuk membuatnya berfungsi.
Catatan: Saya tahu nilai batas waktu terlalu tinggi (7200 detik yaitu 20 jam). Tetapi saya melakukannya secara itorisal hanya untuk menyingkirkan kemungkinan apa pun. Saya sedang dalam proses menemukan nilai batas waktu yang optimal.
sumber
Cukup sertakan berikut ini di file konfigurasi my.ini (Windows) atau my.cnf (Linux) Anda.
sumber
Pastikan Anda memiliki cukup memori untuk dibuang. Silakan terus memeriksa memori saat mengambil dump, mis. Menggunakan perintah seperti ini:
Jika Anda kehabisan memori saat mengambil dump Anda akan mendapatkan
sumber
Saya menemukan:
... membuatnya berfungsi di tempat yang tidak (andal) sebelumnya, meskipun perubahan batas waktu baca / tulis bersih, TCP keepalives dll.
The
max_allowed_packet
pengaturan saja tidak membuatnya bekerja, jadi mungkin tidak diperlukan jikanet_buffer_length
digunakan. - ralph-boltonMengubah
max-allowed-packet
dannet-buffer-length
tampaknya jauh lebih baik daripada menonaktifkan sisipan yang diperluas. - kristoferLihat juga Apa max_allowed_packet cukup besar, dan mengapa saya perlu mengubahnya?
sumber