Błąd mysqldump 2013


18

Mam zainstalowaną bazę danych, którą chciałbym wykonać kopię zapasową w mysql. Problem polega mysqldumpna niepowodzeniu przy eksportowaniu tabeli „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

Działa przez mniej niż 30 sekund i pojawia się błąd jak wyżej.

Całkowity rozmiar bazy danych wynosi 1,3 GB, a tabela maia_mail to 1,0 GB

W my.cnfmam te zestaw:

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

Proszę doradzić lub dać wskazówki, jak zrzucić bazę danych?


170 GB wolnego miejsca. To samo dotyczy tego, czy zrzut do komputera db jest włączony, czy zdalny
garfink

kopie wiadomości e-mail, więc głównie dane varchar
garfink

1300M był ostatnią zmianą, problem istniał, gdy był również ustawiony na domyślny 16M. Serwer również został zrestartowany po zmianie na 1300M.
garfink

Przywróciłem domyślną wartość 16M. zrzut powoduje ten sam błąd 2013 w wierszu 15
garfink

Odpowiedzi:


13

Mógłbym z łatwością zasugerować zmianę ustawień InnoDB, które mogą być mało wymagające, aby uruchomić mysqldump. Być może nie podoba mi się to, co mam na myśli, ale uważam, że jest to najlepsza (jedyna) opcja. Oto jest:

SUGGESTION # 1: Wyłącz rozszerzone wstawki

Domyślne ustawienie mysqldump obejmuje zlepianie setek lub tysięcy wierszy w jednym WSTAWIENIU. Jest to znane jako rozszerzony WSTAW. Powoduje to przekroczenie poza pakiet max_allowed_packet .

Odpowiedziałem na post z powrotem Sep 01, 2011( serwer MySQL zniknął, utrudniając import dużych zrzutów ), w którym dyskutowałem o robieniu tego samego przy importowaniu dużego mysqldump. Uważam, że wyłączenie rozszerzonego INSERT również pomogłoby w stworzeniu kłopotliwego mysqldump.

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

Zła wiadomość: co to robi, tworząc polecenie WSTAW dla każdego wiersza. To zdecydowanie wydłuży czas potrzebny na wykonanie mysqldump. W związku z tym zwiększy się również czas potrzebny do ponownego załadowania (prawdopodobnie 10-100 razy.

Omówiłem skip-extended-insertwcześniej

SUGGESTION # 2: Zrzuć dane binarne jako hex (OPCJONALNIE)

Aby uczynić dane binarne mysqldump bardziej przenośnymi bajtami, zrzuć takie dane w systemie szesnastkowym

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

Złe wieści: jeszcze bardziej nadęje mysqldump

SPRÓBUJ !!!

Uwaga boczna: Maksymalny rozmiar pakietu max_allowed_packet wynosi 1G


5

Otrzymałem ten sam błąd podczas próby zrzutu bazy danych 12 GB. Wprowadziłem następujące zmiany, aby to działało.

  1. skonfigurowano max_allowed_packet do 1024M
  2. skonfigurowano net_read_timeout na 7200
  3. skonfigurowano net_write_timeout na 7200

Uwaga: Wiem, że wartości limitu czasu są zbyt wysokie (7200 sekund, tj. 20 godzin). Ale zrobiłem to celowo, aby wykluczyć jakąkolwiek szansę. Właśnie szukam optymalnej wartości limitu czasu.


2
Dla innych użytkowników: są one ustawiane na serwerze, a nie w pliku konfiguracyjnym mysqldump. Ponadto 7200 sekund to 2 godziny, a nie 20.
Mark

ustaw globalny net_read_timeout = 120; ustaw globalny net_write_timeout = 900; pracował dla mnie
kasi

2

Wystarczy dołączyć następujące informacje do pliku konfiguracyjnego my.ini (Windows) lub my.cnf (Linux).

[mysqld]
max_allowed_packet=1024M 

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

2
Sekcje powinny być na odwrót.
OrangeDog,

1

Upewnij się, że masz wystarczającą ilość pamięci, aby zrobić zrzut. Proszę sprawdzać pamięć podczas robienia zrzutu, np. Używając polecenia takiego:

free -mt

Jeśli wyczerpiesz pamięć podczas robienia zrzutu, dostaniesz

mysqldump: Błąd 2013: Utracono połączenie


1

Znalazłem:

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

... sprawia, że ​​działa tam, gdzie wcześniej nie działał (niezawodnie), pomimo zmian limitu czasu odczytu / zapisu w sieci, zachowań TCP itp.

Same max_allowed_packetustawienia nie sprawiły, że działało, więc może nie być wymagane, jeśli net_buffer_lengthjest używane. - Ralph-Bolton

Modyfikowanie max-allowed-packeti net-buffer-lengthwydaje się znacznie lepsze niż wyłączenie rozszerzonych wstawek. - kristofer

Zobacz także Jaki pakiet max_allowed_package jest wystarczająco duży i dlaczego muszę go zmieniać?

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.