sql >> データベース >  >> RDS >> Mysql

MySQLで破損したInnoDBテーブルを修復するための最良の方法

    概要: この投稿では、MySQLで破損したInnoDBテーブルを修復するための最良の方法のいくつかについて説明します。これは、ハードウェア障害、MySQLサーバーのクラッシュ、およびその他の理由で破損する可能性があります。これらの方法は、破損したInnoDBテーブルを手動で、またはMySQL修復ソフトウェアを使用して修復するための段階的な手順で構成されています。

    MySQL 5.5バージョン以降、InnoDBは、MySQLデータベース内のすべての新しいテーブルのデフォルトのストレージエンジンとして使用されます。 InnoDBの優れている点は、クラッシュリカバリをサポートしていることです。したがって、簡単に破損することはありませんが、破損した場合は、再起動後のMySQLサーバーのクラッシュ、ハードウェア障害、基盤となるプラットフォームのバグなどが原因で発生する可能性があります。

    InnoDBテーブルが破損すると、そのテーブル内のデータが読み取れなくなり、アクセスできなくなります。また、破損したテーブルから読み取ろうとすると、MySQLサーバーがクラッシュする可能性があります。

    MySQLで破損したInnoDBテーブルを修復する方法

    注: 破損したInnoDBテーブルを修復する前に、まずMySQLデータベースファイルをバックアップしてください。

    破損したInnoDBデータベーステーブルを修復する方法は次のとおりです

    1。 破損したInnoDBテーブルを手動で修正

    ストレージエンジンは、サーバーが再起動されるとほとんどの問題を修正できるクラッシュリカバリの実行に役立つため、InnoDBテーブルを修復する必要はほとんどありません。ただし、破損したテーブルを手動で再構築または修復する必要がある場合があります。方法は次のとおりです。

    ステップ1:MySQLサービスを再起動します

    次の手順を実行して、MySQLサービスを再起動し、サーバーにアクセスできるかどうかを確認します。

    1. 「Windows+R」をクリックして実行ウィンドウを開きます キーを一緒に。
    2. msc」と入力します Enterを押します 。
    3. サービスから ウィンドウでMySQLサービスを探して右クリックし、再起動をクリックします。 。

    サーバーにアクセスできる場合は、手順3に進みます。ただし、サーバーが起動しない、または引き続きクラッシュする場合は、次の手順で説明するinnodb_force_recoveryオプションを使用します。

    ステップ2:InnoDBリカバリを強制する

    innodb_force_recoveryを有効にします MySQLデータベースとその破損したテーブルへのアクセスを回復するためのMySQLmy.cnf構成ファイルのオプション。これを行うには、次の手順に従います。

    • my.cnfファイルを開き、[mysqld]セクションに次のコード行を追加します。
    [mysqld]
    Innodb_force_recovery=1
    
    
    • 構成ファイルを保存して閉じます。
    • MySQLサービスを再起動してみてください。

    ステップ3:破損したテーブルを削除する

    破損したテーブルにアクセスできるようになったら、次のmysqldumpコマンドを使用してテーブルデータを新しいファイルにダンプします。

    mysqldump –u user –p db_name table_name > single_dbtable_dump.sql
    
    

    注: 上記のコマンドで空白で区切られたテーブル名を追加して、複数のテーブルをダンプします。

    次に、破損したテーブルをデータベースから削除します。

    mysql –u user –p –execute=”DROP TABLE db_name.table_name”
    
    
    

    ステップ4:テーブルを復元する

    新しく作成されたダンプファイルを使用して、ダンプ(つまり、single_dbtable_dump)ファイルからテーブルを復元します。

    mysql –u user –p < single_dbtable_dump.sql
    
    

    ステップ5:MySQLを通常モードで再起動する

    破損したテーブルが修復されたら、MySQLサービスを停止し、[mysqld]セクションに次の行を入力してInnoDBリカバリモードを無効にします。

    #innodb_force_recovery=...
    
    

    次に、MySQLサービスを通常モードで再起動します。

    注: innodb_force_recoveryオプションを使用していない場合は、サーバーを停止して通常モードで再起動するだけです。

    2。 MySQL修復ソフトウェアを使用して破損したInnoDBテーブルを修正する

    4より大きい「innodb_force_recovery」値を使用してデータベースへのアクセスを回復すると、データが破損する可能性があります。また、深刻な破損の場合、MySQLサーバーの再起動に失敗する可能性があります。専用のMySQL修復ソフトウェアを使用して、MySQLデータベースの破損したテーブルを手動で修復するというこれらの制限を克服できます。 MySQLのStellarRepairなど。

    このソフトウェアは、データをそのままにして、MySQLデータベースのInnoDBテーブルを修復および復元できます。また、テーブルのプロパティ、キー、関係の制約などを回復するのにも役立ちます。

    このMySQLデータベース修復ユーティリティは、WindowsおよびLinuxOSベースのシステムで作成されたInnoDBテーブルとMyISAMテーブルの両方を修復するのに役立ちます。

    ソフトウェアを使用して破損したInnoDBテーブルを修復する手順は次のとおりです。

    1. 無料でダウンロード、インストール、実行するMySQLのStellarRepair
    2. データフォルダの選択から ダイアログボックスで、使用しているMySQLバージョンを選択し、[ OK]をクリックします。 。
    3. データベースの選択から ボックスで、修復するデータベースを選択し、[修復]をクリックします。 。
    4. 修復されたデータベース、テーブル、およびその他の回復可能なコンポーネントのプレビューがソフトウェアプレビューウィンドウに表示されます。
    5. 復元するテーブルを選択し、[ファイル]メニューの[保存]をクリックします。
    6. データベースの保存から ボックスで、 MySQLを選択します 名前を付けて保存の下 、サーバーへの接続に必要な資格情報を入力します。 保存をクリックします 。

    修復されたデータベースファイルは、元のデータベースが保存されているのと同じ場所にある新しいフォルダにあります。

    修復されたデータベースファイルは、元のデータベースが保存されているのと同じ場所にある新しいフォルダにあります。

    結論

    InnoDBテーブルが破損すると、その中のデータが読み取れなくなる可能性があり、時間を処理しないと、サーバーのクラッシュや計画外のダウンタイムが発生する可能性があります。手動の段階的な手順に従うことで、破損したInnoDBテーブルを修正できます。ただし、InnoDBテーブルを手動で修復するプロセスでは、データが失われる可能性があり、期待した結果が得られない可能性があります。

    ただし、Stellar Repair for MySQLなどのMySQLデータベース修復ツールを使用すると、InnoDBストレージエンジンのテーブルを修復して、元の機能状態に復元できます。このファイル修復ユーティリティは、WindowsとLinuxOSの両方で作成されたMySQLデータベースを修復するのに役立ちます。 InnoDBテーブルを修復できるだけでなく、MySQLデータベースのMyISAMテーブルの破損も修正できます。


    1. SQLでは、2つのテーブルが相互に参照しても問題ありませんか?

    2. 解析日後のOracleSelectステートメントからの戻り番号

    3. 複合主キーを適切に作成する方法-MYSQL

    4. JDBCタイプの方言マッピングなし:-9