Home > [MySQL] MySQLのデータベースが壊れたみたいです
Blog

[MySQL] MySQLのデータベースが壊れたみたいです

  2008/04/22  
MySQL 5.1 リファレンスマニュアル :: 4.9.4 テーブル保守とクラッシュ リカバリ
MySQL 5.1 リファレンスマニュアル :: 4.9.4 テーブル保守とクラッシュ リカバリ

とある開発環境(xenのdomainUです)で開発してて、思わずDisk FULL!
ふと気がつくとapacheのログにエラーが大量に…。





[error] Error executing class callback in teardown stage: DBD::mysql::db do failed: Table './sample/table' is marked as crashed and should be repaired at /usr/share/perl5/CGI/Session/MySQL.pm line 83.\n\t(in cleanup) DBD::mysql::db do failed: Table './sample/table' is marked as crashed and should be repaired at /usr/share/perl5/CGI/Session/MySQL.pm line 83.\n
DBD::mysql::db do failed: Table './sample/table' is marked as crashed and should be repaired at /usr/share/perl5/CGI/Session/MySQL.pm line 40 during global destruction.
DBD::mysql::db do failed: Table './sample/table' is marked as crashed and should be repaired at /usr/share/perl5/CGI/Session/MySQL.pm line 40 during global destruction.
DBD::mysql::db do failed: Table './sample/table' is marked as crashed and should be repaired at /usr/share/perl5/CGI/Session/MySQL.pm line 40 during global destruction.
DBD::mysql::db do failed: Table './sample/table' is marked as crashed and should be repaired at /usr/share/perl5/CGI/Session/MySQL.pm line 40 during global destruction.
DBD::mysql::db do failed: Table './sample/table' is marked as crashed and should be repaired at /usr/share/perl5/CGI/Session/MySQL.pm line 40 during global destruction.
:
:
DBD::mysql::db do failed: Table './sample/table' is marked as crashed and should be repaired at /usr/share/perl5/CGI/Session/MySQL.pm line 40 during global destruction.
DBD::mysql::db do failed: Table './sample/table' is marked as crashed and should be repaired at /usr/share/perl5/CGI/Session/MySQL.pm line 40 during global destruction.
DBD::mysql::db do failed: Table './sample/table' is marked as crashed and should be repaired at /usr/share/perl5/CGI/Session/MySQL.pm line 40 during global destruction.



てことで、MySQLのデータベースが壊れたみたいです。
MyISAM形式のデータベースのリペアを行いました。

http://dev.mysql.com/doc/refman/5.0/en/table-maintenance.html (英語です)

http://dev.mysql.com/doc/refman/5.1/ja/table-maintenance.html(バージョン違うけど日本語)

http://dev.mysql.com/doc/refman/4.1/ja/table-maintenance.html (バージョン古いけど日本語)


MyISAM形式のデータベースのリペアは myisamchk コマンドで行います。
直前にMySQLがクラッシュして他のホストにてフェイルオーバーした場合などは、テーブルが破損する恐れがあります。

ファイルをチェックするには --fast オプションとファイル名。
$ myisamchk --fast /var/lib/mysql/sample/table.MYI


チェックでエラーになったファイルをリペアするには「--recover」を使います。
$ myisamchk --recover /var/lib/mysql/sample/table.MYI


リペアに失敗した場合は「--safe-recover」を試します。
$ myisamchk --safe-recover /var/lib/mysql/sample/table.MYI



とりあえず、--recoverで修復されたようです。ほっ。

Comment on this article

Kenji Koshikawa

<span class="topsy_trackback_comment"><span class="topsy_twitter_username"><span class="topsy_trackback_content">データの件数が増えないなーと思っていたら、テーブルが壊れていた模様。 myisamchk 勉強になった。『[MySQL] MySQLのデータベースが壊れたみたいですhttp://t.co/KH3Yqxhv 』</span></span>

しょっさん (sho kisaragi)

<span class="topsy_trackback_comment"><span class="topsy_twitter_username"><span class="topsy_trackback_content">なぜか DB がいかれてたので、これで直りました RT [MySQL] MySQLのデータベースが壊れたみたいです | [ま]技術雑記 - http://goo.gl/pvfeV</span></span>

ブログのデータクラッシュで焦る・・・ | 日々これ修行

[...] [MySQL] MySQLのデータベースが壊れたみたいです [...]

Send comments
  ※ Email will not be published