もしデータベースページが破損したら、SELECT
        INTO ... OUTFILE
        を利用してデータベースからテーブルをダンプしたいかもしれません。通常、この方法で取得されたデータは無傷です。ただし、破損によって
        SELECT * FROM
        
        ステートメントや tbl_nameInnoDB
        バックグラウンド操作がクラッシュしたりアサートしたり、または
        InnoDB
        前進復旧がクラッシュしたり、ということが起こる可能性があります。そのような場合には、innodb_force_recovery
        オプションを使用することで、バックグラウンド処理が実行されないようにしながら
        InnoDB
        ストレージエンジンを強制的に起動することができます。そうすればテーブルのダンプを行えます。たとえば、サーバーを再起動する前に、オプションファイルの
        [mysqld]
        節に次の行を追加することができます:
      
[mysqld] innodb_force_recovery = 4
        innodb_force_recovery
        のデフォルトは 0
        (強制的な復旧を行わない通常の起動)
        です。innodb_force_recovery
        のゼロ以外で指定可能な値を、次に示します。大きい数字は小さい数字のすべての予防策を含んでいます。もし最大
        4
        のオプション値を利用してテーブルをダンプすることができれば、破損した独立ページ上のいくつかのデータが失われるだけなので、比較的に安全です。データベースページはすでに廃止された状態で残されるので、6
        の値はさらに徹底的であり、B
        ツリーやその他のデータベース構造に更なる破損を引き起こす可能性があります。
      
            1
            (SRV_FORCE_IGNORE_CORRUPT)
          
            破損ページを検出したとしてもサーバーを起動させてください。テーブルをダンプする助けになるので、SELECT
            * FROM 
            が破損したインデックスレコードとページを飛び越えるようにしてください。
          tbl_name
            2
            (SRV_FORCE_NO_BACKGROUND)
          
主スレッドが起動するのを防いで下さい。もし消去操作の最中にクラッシュが起きそうであれば、この復旧値はそれを防ぎます。
            3
            (SRV_FORCE_NO_TRX_UNDO)
          
復旧後にトランザクションロールバックを起動しないでください。
            4
            (SRV_FORCE_NO_IBUF_MERGE)
          
挿入バッファーマージ操作を避けてください。もしそれらがクラッシュしそうであれば、行わないでください。テーブル統計を計算しないでください。
            5
            (SRV_FORCE_NO_UNDO_LOG_SCAN)
          
            データベースを起動するときに取り消しログを見ないで下さい:InnoDB
            は不完全なトランザクションもコミットしたように扱います。
          
            6
            (SRV_FORCE_NO_LOG_REDO)
          
復旧と共にログ前進を接続内で行わないでください。
        データベースはそれ以外の場合にゼロ以外の値の
        innodb_force_recovery
        とともに利用するべきではありません。innodb_force_recovery
        が 0
        よりも大きい場合、安全のため、InnoDB
        はユーザーが
        INSERT、UPDATE、または
        DELETE
        操作を行うのを防ぎます。
      
        それらをダンプするためにテーブルから
        SELECT
        することができ、または強制復旧が利用されたとしてもテーブルを
        DROP か
        CREATE
        することができます。もし与えられたテーブルがロールバック上でクラッシュを引き起こしていると知ったら、それを削除することができます。大量の失敗インポートや
        ALTER TABLE
        によって引き起こされた暴走ロールバックを停止するためにもこれを利用することができます。ロールバックせずにデータベースを立ち上げるために
        mysqld
        処理を停止し、innodb_force_recovery
        を 3
        に設定し、そして暴走ロールバックを引き起こしているテーブルを
        DROP
        することができます。
      

