mysql.proc ciągle się zawiesza, nie możesz zrobić mysqldump?

9

Z powodu problemów z InnoDB zrzucę wszystkie bazy danych na nowy serwer:

mysqldump -E -R --all-databases | pv -b | mysql -u root -p -h new.server          

Proces zrzutu został zatrzymany z błędem:

59.9kB assword: 59.9kB 
ERROR 145 (HY000) at line 2970: Table './mysql/proc' is marked as crashed and should 
    be repaired
 228MB 
mysqldump: Got errno 32 on write

Uruchomiłem następujące polecenie, aby naprawić wszystkie tabele we wszystkich bazach danych:

mysqlcheck --auto-repair --all-databases

Kiedy sprawdzam mysql.procstatus, otrzymuję:

mysql> check table mysql.proc;
+------------+-------+----------+----------+
| Table      | Op    | Msg_type | Msg_text |
+------------+-------+----------+----------+
| mysql.proc | check | status   | OK       |
+------------+-------+----------+----------+
1 row in set (0.02 sec)

Jednak nadal pojawia się ten sam błąd podczas ponownego uruchamiania mysqldumppolecenia.

Mam około 2000 procedur sklepowych. Czy to może być przyczyną błędu?

kwanty
źródło
2
Czy naprawiłeś także miejsce docelowe?
Philᵀᴹ
Co to jest 59.9kB assword: 59.9kB? Czy to rzeczywiście część komunikatu o błędzie?
Max Vernon
@quanta done ...
Philᵀᴹ
@ MaxVernon: jest to fragment danych przesyłanych strumieniowo pvprzed wprowadzeniem hasła na hoście docelowym.
kwanty

Odpowiedzi:

3

Ten błąd:

BŁĄD 145 (HY000) w wierszu 2970: Tabela „./mysql/proc” jest oznaczona jako rozbita i powinna zostać naprawiona 228 MB mysqldump: Dostałem errno 32 podczas zapisu

... sugeruje, że problemem jest pisanie, a nie czytanie, więc zrób naprawę docelowej bazy danych.

Philᵀᴹ
źródło
8

Właśnie miałem ten sam problem, został rozwiązany przez wydanie polecenia, zakładając, że katalog danych mysql znajduje się w katalogu / var / lib / mysql / mysql

myisamchk -q -r / var / lib / mysql / mysql / proc

Źródło: http://dev.mysql.com/doc/refman/5.0/en/myisam-repair.html

Marshall Mathers
źródło
Chociaż już zaakceptowana odpowiedź mówi, aby to zrobić, w rzeczywistości pokazałeś, jak to zrobić. +1 !!!
RolandoMySQLDBA