2008-09-22 39 views
9

MySQL 5.0で不注意にDROPpedされたデータベースを復元する必要があります。バックアップファイルのチェックから、データベースデータを保持するための.FRMファイルしかないようです。MySQL InnoDBデータベースのリストア

これは、バックアップからデータベースのリストア/インポートを実行する必要があるかどうかをアドバイスすることはできますか?これを完了するために必要なファイルがありますか?

答えて

14

.frmファイルはデータファイルではなく、単に「データ辞書情報」(MySQL manual参照)を保存するだけです。 InnoDBはそのデータをib_logfile *ファイルに格納します。これは、バックアップ/リストアを行うために必要なものです。詳細はhereを参照してください。

+0

InnoDBには、* .frmファイルに加えて、ibdata、ib_logfile *、および/または* .ibdファイルが必要です。 – silfreed

+0

ib_logfile *と.frmファイル(月間の古いバックアップと一緒に)だけがある場合はどうなりますか?そのシナリオで回復するチャンスはありますか?または何かを回復するためにibdataが必要ですか? – eglasius

6

ああ私...あなたは困っています。データベースをシャットダウンします。 innodbファイルをバックアップします。あなたがデータベースを落とした後に何もしなかったように祈ってください。

Perconaの人(MySQL Performance Blogの著者を含む)は、あなたを助けることができるはずです:Percona emergency support

あなた自身でベンチャーをする場合は、Data Recovery Toolkit for Innodbと一緒に持ってください。

その物流は?すべてのページ(コンピュータ用語ページ... Innodbの場合は16kブロック)を読み込み、データをそのように再構築する必要があります。それは非常に低レベルの作業です(私たちはあなたの16進エディタを開いて、ツールキットがあなたのためにそれをしないとバイトを数え始めています)。そして、あなたが強く経験豊富なプログラマーでなければ、あなたは傷ついています。

7

復元のInnoDB: (あなたのデータフォルダーを仮定は、C:\はProgramData \のMySQL \ MySQLサーバ5.5 \データ)

  1. コピー(データベース名にちなんで名付けられた)データベースのフォルダ復元したいですC:¥ProgramData¥MySQL¥MySQL Server 5.5¥data
  2. 3つのibdataファイルをデータフォルダexにコピーします。 (C:\はProgramData \のMySQL \ MySQLサーバ5.5 \データ)

    _ib_logfile0 
    _ib_logfile1 
    _ibdata1 
    
  3. ファイルによってMBで_ib_logfile0(それは_ib_logfile1と同じである必要があります)のサイズを取得する右クリック - > [プロパティ] innodb_log_file_size = 343M用

  4. 編集MySQLの設定ファイル(MySQLの\ビン\ my.iniファイル)は、正確にibdataファイルサイズであることを

  5. 実行

    のmysqld --defaults-ファイル=のmysql \ビン\ my.iniファイル--standalone --console --innodb_force_recovery = 6

  6. 今、あなたのデータが戻ってあなたのデータベースである必要があります。phpmysqlまたは他のツール

+0

は私のためには機能しません - phpMyAdminでInnoDbテーブルを見ることはできますが、それにアクセスすることはできません –

+0

ステップ3/4で何かしたことがわかりません。実際にmysqlを再起動するために、ファイルを順番に削除しなければなりませんでした。 手順5がわからない... しかし、ステップ1,2,5および再起動したmysqlが動作したようです! – msponagle

+0

@msponagleと同様です。私はすべてのステップを完了することができませんでしたが、defenetlyステップ1、2、多分3サービスを再起動し、マシンが再起動しようとしない場合は起動します。それは私のために働いた。 – ingkevin

-2

あなたがここで見つけることができ、詳細なソリューション使用してそれらをエクスポートします。

http://www.unilogica.com/mysql-innodb-recovery/(ポルトガル語条)

innodb_force_recoveryの旗のほかに、私は別の解決策を見つけました: innodb_file_per_tableは、MyISAMテーブルのように各ファイルにInnoDBテーブルを分割します。

クラッシュリカバリでは、1つのファイルよりも少ないデータを失う可能性があります。ibdata1