web-dev-qa-db-ja.com

mysql.procがクラッシュし続けますが、mysqldumpを実行できませんか?

InnoDBのいくつかの問題のため、すべてのデータベースを新しいサーバーにダンプします。

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

ダンププロセスはエラーで停止しました:

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

次のコマンドを実行して、すべてのデータベースのすべてのテーブルを修復しました。

mysqlcheck --auto-repair --all-databases

mysql.procステータス、私は得ます:

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

ただし、mysqldumpコマンドを再実行すると、同じエラーが発生します。

約2000のストアプロシージャがあります。それがエラーの理由ですか?

9
quanta

このエラー:

2970行目のエラー145(HY000):テーブル './mysql/proc'はクラッシュしているとマークされており、修復する必要があります228MB mysqldump:書き込み時にerrno 32を取得しました

...問題は読み取りではなく書き込みであることを示唆しているため、宛先データベースを修復します。

3
Philᵀᴹ

私は同じ問題を抱えていましたが、mysqlデータディレクトリが/ var/lib/mysql/mysqlにあると想定してコマンドを発行することで修正されました

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

ソース: http://dev.mysql.com/doc/refman/5.0/en/myisam-repair.html

8