今日も一日終わったっす。

時間だけは皆に平等にあるそうですよ。´▽`

MySQLでデータ復旧した方法。

2020-01-18 02:27:05 | Memorandum:備忘録
MySQLでxx.frm、xx.idbファイルからデータを復旧させる方法。
(※エクスポートしてない場合)

◆復旧先は、復旧元と同じ構造、名称のデータベースのテーブルというのが前提。

1.復旧先のデータベースに復旧したいテーブルをCreateする。
  ↑Createすると、xx.frmとxx.idbファイルが作成される。

2.ALTER TABLE 復旧したいテーブル名 DISCARD TABLESPACE;
  ↑xx.idbファイルが削除される

3.復旧元のxx.frm、xx.idb ファイルを復旧先にコピー

  例)xampp使用時は・・
    c:\xampp\mysql\data\データベース\xx.frm と
    c:\xampp\mysql\data\データベース\xx.idb

4.ALTER TABLE baseball_users IMPORT TABLESPACE;
  ↑xx.idbがインポートされる。


↓に上記操作の方法と説明が書いてある。。
https://dev.mysql.com/doc/refman/5.6/ja/alter-table.html


自分の環境ではインストールできなかったが、

xx.frmファイルからCREATE文を抜き出せるユーティリティがあるようで。

そのユーティリティをインストールしてmysqlfrmコマンドを実行するとCREATE文を抜き出してくれるらしい。


また、どこかのサイトの記事でxx.frmファイルをcatコマンドで見ればCREATE文が見られる。

と書いてあったので試したが、カラム名の羅列は見られたが、CREATE文は見れなかった。。


<上手くいかなかった経緯と原因>

Windows7からWindows10へアップグレードしたのはいいが。。

XAMPPを使っていて。

XAMPPフォルダ配下をバックアップ取ったからいいだろうと・・エクスポートしなかった。。

MySQLだし、ファイルコピーすればいけるでしょ。と軽く考えてた。


Windows10上でいざデータを戻そうと思い、方法確認のためググると・・そんな単純な話ではないようだぞ。

↓こちらを参考にさせていただきました。
https://qiita.com/___uhu/items/74168be48c05638c7ac5


方法が無くはないということで↑を真似してやったが、上手いこといかなかった。

断念して、レンタルサーバー上のデータをせこせことローカルに移設した。


が、納得できず。

なので再度、うまくいかなかった方法で実施してみることにした。


そういえばデータを移設したとき、あるテーブルのカラムの並び順が逆になっていた。

上記方法で、そのテーブルのデータ復旧を試みたんだ。

だからうまいこと行かなかったのでは・・。


そーいえば。。

開発中にカラムの順番を変えた覚えがある。


その時テーブル構造を最新状態表示にしていなかったようで。。

その状態でテーブル構造からDDLを逆引きしたため、カラム順が異なっていたのが原因。

↑これは自分のみが納得する話やな。。


そのためWindows7のテーブル構造と、Windows10に作成したテーブル構造が完全一致せず。。

違う入れ物にデータを入れようとしたのでうまくいかなかったのだな。。


と、原因がわかってすっきり。

だいたい原因は己にあるのだよ。。ψ(`∇´)ψ


2 コメント

コメント日が  古い順  |   新しい順
TutorialAce (TutorialAce)
2021-12-31 14:10:13
MySQLのデータ復旧する方法に関するチュートリアル ありがとうございます。
返信する
Unknown (ブログ主)
2021-12-31 14:32:46
コメントありがとうございます。
お役にたっていたらうれしいです。
返信する

コメントを投稿