概要: この記事では、MySQLテーブルが破損したときに発生する可能性のある一般的なエラーのいくつかをリストします。また、MySQLデータベーステーブルの破損の背後にある考えられる理由についても概説します。この記事では、破損したテーブルを修正するためにできることと、MySQLデータベース修復ソフトウェアがテーブルおよび他のすべてのデータベースオブジェクト内のデータを回復するのにどのように役立つかについても説明しています。
MySQLデータベースユーザーとして、次のエラーのいずれかが発生する可能性があります。
- 「テーブルはクラッシュしたとマークされているため、修復する必要があります」
- 「テーブルがクラッシュし、最後の修復に失敗しました」
- 「テーブルtbl_nameは存在しません」
- 「テーブルのキーファイルが正しくありません:「…」。修理してみてください」など
これらは、MySQLテーブルが破損していることを示す警告サインです。
MySQLデータベーステーブルの破損の原因は何ですか?
MySQLデータベーステーブルの破損につながる可能性のある理由は次のとおりです。
- ディスクサブシステム、ドライバー、コントローラーなど、MySQLで使用される基盤となるプラットフォームの問題。
- システムの突然のシャットダウンまたはサーバーのクラッシュ
- データベースへの書き込み中にMySQLプロセスが強制終了されます
- ソフトウェアのバグまたはハードウェアの障害
これらのMySQL破損エラーのいずれかに遭遇すると、テーブル内のデータにアクセスできなくなる可能性があります。破損したテーブルを修正するための解決策について話し合いましょう。
MySQLデータベースの破損エラーを修正する方法
データベースの更新されたバックアップがある場合は、バックアップからデータベースを復元して、アクセスできないテーブルデータを回復します。バックアップが利用できない場合は、以下の手順を実行して、破損したMySQLテーブルを修正し、データを回復します。
注: MySQLデータベースとテーブルのバックアップを取り、修復および回復プロセス中のさらなる損傷を防ぎます。
ステップ1:テーブルにエラーがないか確認する
まず、データベーステーブルで破損エラーを確認する必要があります。 チェックテーブルを使用できます 破損したInnoDBおよびMyISAMテーブルを診断するコマンド:
CHECKTABLEtbl_nameオプション; |
ここで、「tbl_name」を破損したデータベーステーブルの名前に置き換えます。そして、「オプション」を次のオプションのいずれかに置き換えます:QUICK、FAST、MEDIUM、EXTENDED、およびCHANGED。
オプション | 説明 |
クイック | |
高速 | |
変更 | |
中 | 行をスキャンして、削除されたリンクが有効かどうかを確認します。 MyISAMテーブルにのみ適用されます。 |
拡張 | MyISAMテーブルの各行のすべてのキーに対して完全なキールックアップを実行します。実行には長い時間がかかります。 |
複数のテーブルの破損を確認するには、次のコマンドを使用します。
CHECK TABLE tbl_name1、tbl_name2、tbl_name3オプション; |
注: CHECK TABLEコマンドは、MySQLプロセスが実行されている場合にのみ使用できます。ただし、プロセス/サーバーが実行されていない場合は、次の「myisamchk」コマンドを使用して、MyISAMテーブルの破損を確認できます。
myisamchk[オプション]tbl_name…
このコマンドは単一のテーブルをチェックします。
次のコマンドを実行して、MySQLデータベース内のすべてのテーブルが破損していないかどうかを確認します。
myisamchk /path/to/datadir/*/*.MYI
myisamchkユーティリティはInnoDBテーブルでは機能しません。
ステップ2:破損したテーブルを修復する
注: myisamchkコマンドは、MyISAMテーブルにのみ適用され、InnoDBテーブルには機能しません。 Innodbテーブルの修復と回復については、ステップ3にスキップしてください。
myisamchkユーティリティは、破損した(破損した)MyISAMテーブルの修復にも役立ちます。破損したテーブルを修復するためのユーティリティを使用するには、次の手順を実行します。
- 次のように入力してMySQLサービスを停止します:
service mysqld stop cd / var / lib / mysql |
- データベースが配置されているディレクトリに移動します。
cd / var / lib / mysql / table_name myisamchk<表> |
- 破損したテーブルを修復するには、TABLEを修復するテーブルの名前に置き換えて、次のコマンドを実行します。
myisamchk –recover
ステップ3:InnoDBリカバリを強制するInnoDBテーブルの破損を修正するには、「innodb_force_recovery」を使用します オプション。このオプションを使用すると、バックグラウンド操作なしでInnoDBデータベースエンジンが強制的に起動され、テーブルをダンプできます。
値1でinnodb_force_recoveryを開始し、必要に応じて値を増やすことができます。 innodbリカバリを開始したら、MySQLサーバーを再起動してから、テーブルをダンプします。ただし、状況によっては、値を4から6に設定する必要がある場合があります。これにより、データが破損する可能性があります。 注意! innodb_force_recovery =3以下の値でテーブルをダンプできる場合は、リカバリプロセスを安全に実行できます。ただし、innodb_force_recoveryを4より大きい値に設定すると、データ損失のリスクが伴います。
これらの手順を実行すると、MySQLデータベースとそのテーブルが復元されます。それでもデータが欠落している場合は、MySQLのステラリペアなどのプロのMySQLデータベース修復ソフトウェアを使用する必要があります。 データベースを復元し、そのデータを回復します。ソフトウェアは、データをそのまま維持して、InnoDBテーブルとMyISAMテーブルの両方を修復できます。 WindowsおよびLinuxシステムでのMySQLテーブルの修復をサポートしています。 結論MySQLデータベーステーブルは、突然のシステムシャットダウン、サーバークラッシュ、ハードウェア障害、MySQLコードのバグなどが原因で破損する可能性があります。MySQLテーブルが破損すると、この記事に記載されているエラーが発生します。 「myisamchk」ユーティリティを使用するか、InnoDBリカバリを強制することで、破損したMyISAMテーブルの修復を試みることができます。ただし、MyISAMテーブルを修復し、InnoDBリカバリを手動で実行するにはかなりの時間がかかる場合があります。また、手動リカバリプロセスにより、データが失われる可能性があります。より良い代替手段は、MySQLソフトウェアにStellarRepairを使用することです。このソフトウェアを使用すると、元のデータに変更を加えることなく、MyISAMとInnoDBの両方のデータベーステーブルを修復できます。 |