次の手順は、MyISAM
テーブルに適用されます。 InnoDB
テーブルの破損が発生した場合に実行するステップの詳細は、セクション1.6「質問またはバグをレポートする方法」 を参照してください。
破損した MyISAM
テーブルが発生した場合、または一部の UPDATE ステートメントの後に mysqld が常に失敗した場合は、次の手順を実行して問題が再現可能かどうかをテストできます:
mysqladmin shutdown で MySQL デーモンを停止します。
修復によって問題が発生する可能性が非常に低いケースから保護するために、テーブルのバックアップを作成します。
myisamchk -s database/*.MYI を使用してすべてのテーブルをチェックします。 破損したテーブルを myisamchk -r database/
table
.MYI で修復します。テーブルの 2 番目のバックアップを作成します。
より多くの領域が必要な場合は、MySQL データディレクトリから古いログファイルを削除 (または移動) します。
バイナリログを有効にして mysqld を起動します。 mysqld がクラッシュするステートメントを見つける場合は、一般クエリーログも有効にしてサーバーを起動するようにしてください。 セクション5.4.3「一般クエリーログ」およびセクション5.4.4「バイナリログ」を参照してください。
クラッシュしたテーブルを取得したら、mysqld サーバーを停止します。
バックアップをリストアします。
バイナリログを有効にせずに、mysqld サーバーを再起動します。
mysqlbinlog binary-log-file | mysql を使用してステートメントを再実行します。 バイナリログは、
hostname-bin.
という名前で MySQL データベースディレクトリに保存されます。NNNNNN
テーブルが再度破損した場合、または前述のコマンドで mysqld が停止する可能性がある場合は、再現可能なバグが見つかりました。 セクション1.6「質問またはバグをレポートする方法」の手順を使用して、テーブルおよびバイナリログをバグデータベースに FTP で送信してください。 サポートのお客様の場合は、MySQL カスタマサポートセンター ((https://www.mysql.com/support/)) を使用して MySQL チームにその問題を通知し、可能な限り早く修正してもらうことができます。