MySQL 8.0 リファレンスマニュアル


MySQL 8.0 リファレンスマニュアル  /  ...  /  MyISAM テーブル保守スケジュールのセットアップ

7.6.5 MyISAM テーブル保守スケジュールのセットアップ

問題が発生するのを待つより、テーブルチェックを定期的に実行することをお勧めします。 MyISAM テーブルをチェックまたは修復する 1 つの方法は、CHECK TABLE および REPAIR TABLE ステートメントを使用することです。 セクション13.7.3「テーブル保守ステートメント」を参照してください。

テーブルをチェックする別の方法は、myisamchk を使用することです。 保守の目的には、myisamchk -s を使用できます。 -s オプション (--silent の短縮形) により、サイレントモードで myisamchk が実行され、エラーが発生した場合のみ、メッセージが出力されます。

自動 MyISAM テーブルチェックを有効にすることをお勧めします。 たとえば、マシンが更新の途中で再起動を実行した場合、通常、影響を受けた可能性のある各テーブルが使用される前に、それをチェックする必要があります。 (これらは「クラッシュしたテーブルが必要です。」) サーバーが MyISAM テーブルを自動的にチェックするようにするには、myisam_recover_options システム変数を設定して起動します。 セクション5.1.8「サーバーシステム変数」を参照してください。

通常のシステム操作時にも定期的にテーブルをチェックしてください。 たとえば、crontab ファイル内の次のような行を使用して、週 1 回 cron ジョブを実行し、重要なテーブルをチェックします。

35 0 * * 0 /path/to/myisamchk --fast --silent /path/to/datadir/*/*.MYI

これはクラッシュしたテーブルに関する情報を出力するため、テーブルを調査し、必要に応じて修復できます。

はじめに、過去 24 時間中に更新されたすべてのテーブルに対して、毎晩 myisamchk -s を実行します。 その問題がまれにしか発生しないことがわかったら、チェックの頻度を週 1 回などに減らすことができます。

通常、MySQL テーブルはほとんど保守が必要ありません。 動的サイズの行のある MyISAM テーブル (VARCHARBLOB、または TEXT カラムのあるテーブル) に何回も更新を実行するか、または多くの削除された行のあるテーブルがある場合、ときどきテーブルの領域をデフラグ/再利用する必要がある場合があります。 これは、問題のテーブルに OPTIMIZE TABLE を使用して実行できます。 または、しばらくの間、mysqld サーバーを停止できる場合は、サーバーの停止中に、場所をデータディレクトリ内に変更し、次のコマンドを使用します。

shell> myisamchk -r -s --sort-index --myisam_sort_buffer_size=16M */*.MYI

関連キーワード:  テーブル, バックアップ, チェック, リカバリ, 保守, myisamchk, 実行, サーバー, 方法, mysqldump