mysqldump Hatası 2013


18

Ben yüklü bir veritabanı var, ben mysql yedekleme istiyorum. Sorun mysqldump'maia_mail' tablosunu dışa aktarmada başarısız oluyor

# 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

30 saniyeden az çalışır ve yukarıdaki gibi hata alır.

DB'nin toplam boyutu 1.3GB, maia_mail tablosu 1.0GB

In my.cnfI Bu dizi var:

[mysqld]
max_allowed_packet      = 1300M
[mysqldump]
max_allowed_packet      = 1300M

Lütfen veri tabanının nasıl döküleceğine dair tavsiye veya bilgi verin?


170 GB boş alan. Ben db açık veya uzak makine dökümü olsun aynıdır
garfink

e-posta kopyaları yani varchar verileri çoğunlukla
garfink

1300M yeni bir değişiklikti, sorun varsayılan 16M'ye ayarlandığında da vardı. Sunucu, 1300M'ye geçtikten sonra da yeniden başlatılmıştı.
garfink

16M varsayılanını ayarladım. dökümü, satır 15'te aynı hatayla sonuçlandı
garfink

Yanıtlar:


13

Kolayca sadece bir mysqldump çalışmak için bir littel ağır el olabilir InnoDB ayarlarını değiştirmeyi önerebilir. Öneri hakkında ne olduğumu beğenmeyebilirsiniz, ancak bunun en iyi (sadece) seçeneğiniz olduğuna inanıyorum. İşte gidiyor:

ÖNERİ # 1: Genişletilmiş kesici uçları devre dışı bırak

Mysqldump için varsayılan ayar, tek bir INSERT içinde yüzlerce veya binlerce satırı bir araya toplamayı içerir. Bu, genişletilmiş bir INSERT olarak bilinir. Sadece max_allowed_packet dışında bir miktar taşmaya neden oluyor .

Ben büyük bir mysqldump ithal için aynı şeyi yapmayı tartıştım nerede Sep 01, 2011( MySQL sunucusu büyük dökümlerin ithalat engel ortadan kalktı ) bir yazıyı yanıtladı. Genişletilmiş INSERT'i devre dışı bırakmanın da sıkıntılı bir mysqldump oluşturmaya yardımcı olacağına inanıyorum.

mysqldump -u root --skip-extended-insert -p maia > maia.sql

Kötü haber: Bunun için her satır için bir INSERT komutu oluşturun. Bu kesinlikle mysqldump gerçekleştirmek için gereken süreyi artıracaktır. Sonuç olarak, aynı zamanda yeniden yükleme zamanını da artıracaktır (muhtemelen 10-100 faktör ile).

Daha skip-extended-insertönce tartıştım

ÖNERİ # 2: İkili verileri onaltılık olarak döküm (İSTEĞE BAĞLI)

Mysqldump'ın ikili verilerini daha fazla byte taşınabilir yapmak için, bu verileri onaltılık düzende boşaltın

mysqldump -u root --skip-extended-insert --hex-blob -p maia > maia.sql

Kötü Haber: Mysqldump'ı biraz daha şişirecek

BİR ŞANS VER !!!

Yan Not: max_allowed_packet'in maksimum boyutu 1G'dir


5

Ben de 12 GB veritabanı dökümü çalışırken aynı hatayı alıyordum. Çalıştırmak için aşağıdaki değişiklikleri yaptım.

  1. max_allowed_packet değerini 1024M olarak yapılandırdı
  2. net_read_timeout değerini 7200 olarak yapılandırdı
  3. net_write_timeout değerini 7200 olarak yapılandırdı

Not: Zaman aşımı değerlerinin çok yüksek olduğunu biliyorum (7200 saniye yani 20 saat). Ama bunu sadece herhangi bir şansı dışlamak için isteyerek yaptım. Optimal bir zaman aşımı değeri bulma sürecindeyim.


2
Diğer kullanıcılar için: bunlar mysqldump yapılandırma dosyasında değil sunucuda ayarlanmaktadır. Ayrıca, 7200 saniye 20 değil, 2 saattir.
Mark

set global net_read_timeout = 120; set global net_write_timeout = 900; benim için çalıştı
kasi

2

Aşağıdakileri my.ini (Windows) veya my.cnf (Linux) yapılandırma dosyanıza eklemeniz yeterlidir.

[mysqld]
max_allowed_packet=1024M 

[mysqldump]
max_allowed_packet=1024M 
net_read_timeout=3600 
net_write_timeout=3600

2
Bölümler tam tersi olmalıdır.
OrangeDog

1

Boşaltmak için yeterli belleğiniz olduğundan emin olun. Dökümü alırken lütfen hafızayı kontrol etmeye devam edin, örn. Böyle bir komut kullanarak:

free -mt

Çöplüğü alırken egzozu hafızaya alırsanız,

mysqldump: Hata 2013: Bağlantı kesildi


1

Buldum:

--max-allowed-packet=1G --net-buffer-length=32704

... net okuma / yazma zaman aşımı değişikliklerine, TCP tutmalarına vb. rağmen daha önce (güvenilir bir şekilde) çalışmaz.

max_allowed_packetAyarlar yalnız o iş yapmak yoktu, bu yüzden eğer gerekmeyebilir net_buffer_lengthkullanılır. - ralph-bolton

Değiştirilmiş max-allowed-packetve net-buffer-lengthgenişletilmiş ekleri devre dışı bırakmaktan çok daha iyi görünüyor. - kristofer

Ayrıca bkz. Max_allowed_packet yeterince büyük ve neden değiştirmem gerekiyor?

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.