MySQLをWindows仮想マシン内にインストールしました。ハードドライブがクラッシュし、システムはすべてを再び復元することができません。しかし、c:ROOT全体にアクセスできます。だから私は行きました
c:/ProgramData/Mysql/Mysql Server 5.5/data/myDatabaseName
そこでは、.frm、.opt、.trg、.trnなどのさまざまなファイルを確認できます。通常の方法では、mysqldumpを実行してすべてのデータベースをコマンドラインからバックアップおよび復元できますが、システムを復元できません。したがって、これらのすべてのファイルをコピーして、別の物理インスタンスの同じデータベース内の同じディレクトリ内に貼り付ける必要がありました。
問題は、いくつかのテーブルがこの新しいインスタンスによって認識されないことです。したがって、データベースを復元するには、コピーと過去だけでは不十分だと思います。
何が欠けていますか?
注:データベースにはinnoDbテーブルとMyisamテーブルがあります。
InnoDBでは、各.ibd
ファイルにはc:/ProgramData/Mysql/Mysql Server 5.5/data/ibdata1
内のデータディクショナリで参照されるtablespace_idがあるため、データベースをカットアンドペーストするだけでは不可能です。
これはInnoDBの図解です(Percona CTO Vadim Tkachenkoから)
データベースだけを回復することはできません。データフォルダー全体を復元する必要があります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 をリロードする必要があります。 。