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


MySQL 8.0 リファレンスマニュアル  /  ...  /  テーブルが破損した場合のテストケースの作成

5.9.1.7 テーブルが破損した場合のテストケースの作成

次の手順は、MyISAM テーブルに適用されます。 InnoDB テーブルの破損が発生した場合に実行するステップの詳細は、セクション1.6「質問またはバグをレポートする方法」 を参照してください。

破損した MyISAM テーブルが発生した場合、または一部の UPDATE ステートメントの後に mysqld が常に失敗した場合は、次の手順を実行して問題が再現可能かどうかをテストできます:

  1. mysqladmin shutdown で MySQL デーモンを停止します。

  2. 修復によって問題が発生する可能性が非常に低いケースから保護するために、テーブルのバックアップを作成します。

  3. myisamchk -s database/*.MYI を使用してすべてのテーブルをチェックします。 破損したテーブルを myisamchk -r database/table.MYI で修復します。

  4. テーブルの 2 番目のバックアップを作成します。

  5. より多くの領域が必要な場合は、MySQL データディレクトリから古いログファイルを削除 (または移動) します。

  6. バイナリログを有効にして mysqld を起動します。 mysqld がクラッシュするステートメントを見つける場合は、一般クエリーログも有効にしてサーバーを起動するようにしてください。 セクション5.4.3「一般クエリーログ」およびセクション5.4.4「バイナリログ」を参照してください。

  7. クラッシュしたテーブルを取得したら、mysqld サーバーを停止します。

  8. バックアップをリストアします。

  9. バイナリログを有効にせずにmysqld サーバーを再起動します。

  10. mysqlbinlog binary-log-file | mysql を使用してステートメントを再実行します。 バイナリログは、hostname-bin.NNNNNN という名前で MySQL データベースディレクトリに保存されます。

  11. テーブルが再度破損した場合、または前述のコマンドで mysqld が停止する可能性がある場合は、再現可能なバグが見つかりました。 セクション1.6「質問またはバグをレポートする方法」の手順を使用して、テーブルおよびバイナリログをバグデータベースに FTP で送信してください。 サポートのお客様の場合は、MySQL カスタマサポートセンター ((https://www.mysql.com/support/)) を使用して MySQL チームにその問題を通知し、可能な限り早く修正してもらうことができます。


関連キーワード:  サーバー, テーブル, 変数, ログ, インストール, バイナリ, 作成, mysqld, データ, 形式