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.