Google検索から学んだこと:
MyISAMテーブルを使用すると、FRM、MYD、MYIファイルを簡単にコピーできます。回復しようとしているDBのフォルダーには、FRMファイルと「db.opt」ファイルしかないため、MyISAMテーブルであってはなりません。
状況:
コンピュータがクラッシュしましたが、データはまだハードドライブにあります。 MySQL 5.5.8サーバーは、クラッシュしたコンピューターにWAMPとともにインストールされました。
データフォルダー全体をコピーしようとしましたが、MySQLは空のデータベースのみを作成し、テーブルは作成しません。
リカバリしたいテーブルごとにFRMファイルがあります。ただし、読み取り可能なテキストファイルではありません。これらのファイルからテーブル構造を回復する方法はありますか?
この投稿 https://stackoverflow.com/a/7688688/1188138 は、構造が実際にそれらのファイルにあることを示していますが、取得方法を提供していません。
どうもありがとうございました。考えられる限りのことをすべて試しました。
.frmファイルのみが表示される場合は、使用中のストレージエンジンがInnoDBであり、innodb_file_per_tableがデフォルトでオフになっている可能性が高いです。
クラッシュしたサーバーのdatadirから別のマシンの別のディスクにすべてを転送した場合、そのフォルダーをそのままにしてmysqlを起動できる可能性があります。
たとえば、ServerAがクラッシュしたサーバーで、ServerBが配置したい場所だとします。
net stop mysql
サーバーBでmysqlがダウンしていることを確認するためにサーバーBでmd C:\MySQLData
on ServerBこれをServerBのmy.iniに追加します
[mysql]
datadir=C:/MySQLData
C:\> del C:\MySQLData\ib_logfile*
on ServerBnet start mysql
on ServerBこれを試して、何が起こったか教えてください
あなたは今すべてを回復することができたので、今これを行ってください:
mysqldump -u... -p... -A -d --routines --triggers > C:\MySQLSchema.sql
これにより、MySQLインスタンスのすべてのテーブル構造が提供されます。
ファイルを新しい場所にコピーした場合は、ユーザーの権限でファイルをコピーした可能性があります。
MySQLには、データディレクトリへの読み取り/書き込み権限が必要です。
TwinDBでは、mysqlfrm
へのWebインターフェイスを構築しました。それは無料で使いやすいです。
テーブル構造を回復するには、.frmファイルをアップロードするだけです。
手順は次のとおりです。 1. https://recovery.twindb.com/ を開きます。 「Recover Structure」をクリックします
一連の.frmファイルを含むアーカイブをアップロードすることもできます。サイトはそれらを完全に回復します。