Mam zainstalowaną bazę danych, którą chciałbym wykonać kopię zapasową w mysql. Problem polega mysqldump
na 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.cnf
mam te zestaw:
[mysqld]
max_allowed_packet = 1300M
[mysqldump]
max_allowed_packet = 1300M
Proszę doradzić lub dać wskazówki, jak zrzucić bazę danych?
Odpowiedzi:
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.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-insert
wcześniejAug 12, 2011
: Dlaczego plik mysqldump jest tak duży?Aug 09, 2013
: Kopia zapasowa / eksport danych z tabeli załączników MySQL 5.5 nadal nie działa!Nov 16, 2014
: Jak wsadować wiele instrukcji wstawiania dla zrzutu bazy danych za pomocą MySQL?SUGGESTION # 2: Zrzuć dane binarne jako hex (OPCJONALNIE)
Aby uczynić dane binarne mysqldump bardziej przenośnymi bajtami, zrzuć takie dane w systemie szesnastkowym
Złe wieści: jeszcze bardziej nadęje mysqldump
SPRÓBUJ !!!
Uwaga boczna: Maksymalny rozmiar pakietu max_allowed_packet wynosi 1G
źródło
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.
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.
źródło
Wystarczy dołączyć następujące informacje do pliku konfiguracyjnego my.ini (Windows) lub my.cnf (Linux).
źródło
Upewnij się, że masz wystarczającą ilość pamięci, aby zrobić zrzut. Proszę sprawdzać pamięć podczas robienia zrzutu, np. Używając polecenia takiego:
Jeśli wyczerpiesz pamięć podczas robienia zrzutu, dostaniesz
źródło
Znalazłem:
... 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_packet
ustawienia nie sprawiły, że działało, więc może nie być wymagane, jeślinet_buffer_length
jest używane. - Ralph-BoltonModyfikowanie
max-allowed-packet
inet-buffer-length
wydaje się znacznie lepsze niż wyłączenie rozszerzonych wstawek. - kristoferZobacz także Jaki pakiet max_allowed_package jest wystarczająco duży i dlaczego muszę go zmieniać?
źródło