Co oznacza błąd MySQL 2013?


14

Używam mysqldump na serwerze mysql w cronie (jako kopia zapasowa) i otrzymuję komunikaty ostrzegawcze, takie jak

mysqldump: Got error: 2013: Lost connection to MySQL server during query when doing refresh

Co oznacza ten błąd MySQL (2013)? Zrobiłem trochę googlingu i to nie jest bardzo pomocne ...

Dla przypomnienia, mysqldump łączy się z serwerem MySQL Slave, działał podczas łączenia się z serwerem master.

Odpowiedzi:


4

Może to być bardzo złe, 2013oznacza to, że wątek obsługujący mysqldumpproces wygasł. Może to być spowodowane tym, że silnik InnoDB na serwerze wykrył błąd podczas odczytu pliku bazy danych dla Twojej bazy danych. Ponieważ konieczne mysqldumpjest przeczytanie wszystkich stron dla całej bazy danych w celu wykonania kopii zapasowej, prawdopodobnie spowoduje ona ukryte uszkodzenie, którego aplikacja może uniknąć podczas codziennej aktywności.

Jeśli uruchomisz mysql polecenie, które zgłosi, że identyfikator połączenia jest niski, oznacza to, że serwer prawdopodobnie sam się zrestartował. Powinieneś mysqld.lognatychmiast sprawdzić swoje, aby dowiedzieć się, dlaczego.


dzięki za zaakceptowanie mojej odpowiedzi. Co znalazłeś w swoim mysqld.log?
Dave Cheney

Widziałem identyfikator niskiego połączenia, co oznacza, że ​​serwer zrestartował się. Nie wiem jeszcze dlaczego. Jak sprawdzić „ukryte uszkodzenie”
Rory

1
Jeśli serwer mysql zrestartował się sam, w dzienniku mysql będzie duży (czytać strony debugowania).
Dave Cheney

11

2013 oznacza, że ​​połączenie z serwerem zniknęło. Dostępnych jest kilka możliwości:

  1. Ktoś KILLedytował zapytanie
  2. Problemy z siecią spowodowały utratę połączenia
  3. Serwer się zawiesił / zmarł
  4. Twoje połączenie było bezczynne wait_timeouti zostało zabite
  5. Klient nie pobierał danych wystarczająco szybko net_wait_timeouti został zabity

1
Czy to net_write_timeout czy net_wait_timeout ?
ks1322,

również net_read_timeout= 600 i connect_timeout= 60

0

czy otwierasz połączenie, wykonujesz długą operację, która nie obejmuje połączenia, a następnie próbujesz wykonać zapytanie? w takim przypadku mysql prawdopodobnie porzucił połączenie z powodu wait_timeout. wystarczy ponownie połączyć się przed wydaniem zapytania.

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.