web-dev-qa-db-ja.com

FRMファイルからMySQLテーブル構造を回復する方法

Google検索から学んだこと:

MyISAMテーブルを使用すると、FRM、MYD、MYIファイルを簡単にコピーできます。回復しようとしているDBのフォルダーには、FRMファイルと「db.opt」ファイルしかないため、MyISAMテーブルであってはなりません。

状況:

コンピュータがクラッシュしましたが、データはまだハードドライブにあります。 MySQL 5.5.8サーバーは、クラッシュしたコンピューターにWAMPとともにインストールされました。

データフォルダー全体をコピーしようとしましたが、MySQLは空のデータベースのみを作成し、テーブルは作成しません。

リカバリしたいテーブルごとにFRMファイルがあります。ただし、読み取り可能なテキストファイルではありません。これらのファイルからテーブル構造を回復する方法はありますか?

この投稿 https://stackoverflow.com/a/7688688/1188138 は、構造が実際にそれらのファイルにあることを示していますが、取得方法を提供していません。

どうもありがとうございました。考えられる限りのことをすべて試しました。

5
Steve Burke

.frmファイルのみが表示される場合は、使用中のストレージエンジンがInnoDBであり、innodb_file_per_tableがデフォルトでオフになっている可能性が高いです。

クラッシュしたサーバーのdatadirから別のマシンの別のディスクにすべてを転送した場合、そのフォルダーをそのままにしてmysqlを起動できる可能性があります。

たとえば、ServerAがクラッシュしたサーバーで、ServerBが配置したい場所だとします。

  • MySQL 5.5.8をServerBにインストールする
  • net stop mysqlサーバーBでmysqlがダウンしていることを確認するためにサーバーBで
  • md C:\MySQLData on ServerB
  • ServerAのデータフォルダーからServerBのC:\ MySQLDataにすべてをドロップします。
  • C:\ MySQLDataを新しいdatadirにします

これをServerBのmy.iniに追加します

[mysql]
datadir=C:/MySQLData
  • C:\> del C:\MySQLData\ib_logfile* on ServerB
  • net start mysql on ServerB

これを試して、何が起こったか教えてください

PDATE 2012-02-03 17:06 EDT

あなたは今すべてを回復することができたので、今これを行ってください:

mysqldump -u... -p... -A -d --routines --triggers > C:\MySQLSchema.sql

これにより、MySQLインスタンスのすべてのテーブル構造が提供されます。

4
RolandoMySQLDBA

ファイルを新しい場所にコピーした場合は、ユーザーの権限でファイルをコピーした可能性があります。

MySQLには、データディレクトリへの読み取り/書き込み権限が必要です。

2
Derek Downey

TwinDBでは、mysqlfrmへのWebインターフェイスを構築しました。それは無料で使いやすいです。

テーブル構造を回復するには、.frmファイルをアップロードするだけです。

手順は次のとおりです。 1. https://recovery.twindb.com/ を開きます。 「Recover Structure」をクリックします enter image description here

  1. 次のサブメニューで、「。frmファイルから」をクリックします enter image description here

  2. 次のビューで[参照]をクリックし、ローカルディスク上の.frmファイルを選択します。 「アップロード」をクリック enter image description here

  3. 魔法が効くまで待ちます enter image description here

  4. 復元された構造を取得します。 enter image description here

一連の.frmファイルを含むアーカイブをアップロードすることもできます。サイトはそれらを完全に回復します。

0
akuzminsky