MySQL バージョン 3.23.13 以降、CHECK
        TABLE コマンドを使用して MyISAM
        テーブルをチェックできるようになりました。See
        項4.5.4. 「CHECK TABLE 構文」。 テーブルの修復は
        REPAIR TABLE コマンドで行えます。
        See 項4.5.5. 「REPAIR TABLE 構文」。
      
        問題が発生するのを待つより、定期的にテーブルチェックを行うことを推奨します。保守目的では、myisamchk
        -s
        を使用してテーブルをチェックできます。-s
        オプション(--silent
        の短縮形)を使用すると、サイレントモードで
        myisamchk
        が実行され、エラー発生時のみメッセージが出力されます。
      
        また、サーバが起動するたびにテーブルをチェックするという方法もあります。
        たとえば、更新の途中でマシンがリブートされた場合、影響を受けた可能性のあるテーブルをすべてチェックする必要があります(つまり、``破損の可能性があるテーブル''
        をチェックします)。リブート後に古い
        .pid(プロセス
        ID)ファイルが残っていた場合、mysqld_safe
        にテストを追加して、直前の 24
        時間以内に変更されたテーブルのチェックを
        myisamchk
        で実行することができます。.pid
        ファイルは mysqld
        起動時に作成され、正常終了時に削除されます。システム起動時に
        .pid
        ファイルが存在していれば、mysqld
        が異常終了したことになります。
      
        より完全なテストを行うには、.pid
        ファイルの作成後に変更されたすべてのテーブルをチェックするという方法もあります。
      
        通常のシステム運用中にも定期的にテーブルをチェックしてください。MySQL
        AB では、週に一度 cron
        ジョブを実行して重要なテーブルをチェックしています。crontab
        ファイルは以下のようになります。
      
35 0 * * 0 /path/to/myisamchk --fast --silent /path/to/datadir/*/*.MYI
これで、クラッシュしたテーブルに関する情報が出力されるので、必要に応じて検査および修復を行えます。
ここ数年、予想外のテーブル破損(ハードウェアトラブル以外による破損)は発生していないので、当社では週に一度のチェックで十分としています。
        最初のうちは、myisamchk -s
        を毎晩実行して、直前の 24
        時間以内に更新されたすべてのテーブルをチェックするようにします。しばらくすると、MySQL
        の信頼性の高さを実感できるはずです。
      
        通常、MySQL
        テーブルの保守はそれほど頻繁に行う必要はありません。動的サイズのレコード(VARCHAR
        カラム、BLOB カラム、または
        TEXT
        カラム)があるテーブルを変更したり、多くのレコードが削除されたテーブルがある場合には、月に一度程度、最適化を行ってテーブルの領域を解放することを推奨します。
      
        これを行うには、目的のテーブルで
        OPTIMIZE TABLE
        を実行するか、mysqld
        サーバを停止して以下を実行します。
      
isamchk -r --silent --sort-index -O sort_buffer_size=16M */*.ISM myisamchk -r --silent --sort-index -O sort_buffer_size=16M */*.MYI
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.

