web-dev-qa-db-ja.com

Dataディレクトリのファイルのみを使用してMySqlデータベースを復元することは可能ですか?

MySQLをWindows仮想マシン内にインストールしました。ハードドライブがクラッシュし、システムはすべてを再び復元することができません。しかし、c:ROOT全体にアクセスできます。だから私は行きました

c:/ProgramData/Mysql/Mysql Server 5.5/data/myDatabaseName 

そこでは、.frm、.opt、.trg、.trnなどのさまざまなファイルを確認できます。通常の方法では、mysqldumpを実行してすべてのデータベースをコマンドラインからバックアップおよび復元できますが、システムを復元できません。したがって、これらのすべてのファイルをコピーして、別の物理インスタンスの同じデータベース内の同じディレクトリ内に貼り付ける必要がありました。

問題は、いくつかのテーブルがこの新しいインスタンスによって認識されないことです。したがって、データベースを復元するには、コピーと過去だけでは不十分だと思います。

何が欠けていますか?

注:データベースにはinnoDbテーブルとMyisamテーブルがあります。

3
zwitterion

InnoDBでは、各.ibdファイルにはc:/ProgramData/Mysql/Mysql Server 5.5/data/ibdata1内のデータディクショナリで参照されるtablespace_idがあるため、データベースをカットアンドペーストするだけでは不可能です。

これはInnoDBの図解です(Percona CTO Vadim Tkachenkoから)

sx

データベースだけを回復することはできません。データフォルダー全体を復元する必要がありますc:/ProgramData/Mysql/Mysql Server 5.5/data.ibdファイルをデータディクショナリに再接続する方法については、.frmおよび.ibdファイルから古い投稿 復元テーブルを参照してください

データベースフォルダーに.ibdファイルがなく、.frmファイルのみがある場合、すべてのデータはc:/ProgramData/Mysql/Mysql Server 5.5/data/ibdata1に含まれます。

データディクショナリを壊した可能性があります。元のデータベースからdatadirまたは mysqldumpを完全に復元し、mysqldをシャットダウンして、すべてのdatadirを削除し、mysqldを再起動して、mysqldump をリロードする必要があります。 。

3
RolandoMySQLDBA