PCのソフトセットアップとMySQL復旧メモ

前回NVMeのM.2ハードディスクが壊れて再インストールしたWindows 11ですが、重要データはクラウドなり別ドライブなりに保存していたものの、ソフトウェア類は再インストールが必要なのでその項目をメモしていきます。

以前のパソコンに入っていたものばかりなのでセットアップは手間なだけで難しくはありませんが、MySQLのリカバリだけ苦戦したので別途後述したいと思います。

ということで自分用の備忘録メモになっていますがインストールした項目は以下の通りです。

  • Chrome
  • Firefox
  • Google Drive
  • Citrix Workspace
  • Hidemaru
  • IntelliJ IDEA Community Edition(無料版はかなり下にスクロールしないと見つからないので注意)
  • PyCharm Community Edition(同上)
  • MySQL Community(同じく)
  • Python
  • Git
  • Office 2016
  • TWS
  • MetaTrader
  • QuantAnalyzer
  • LINE
  • IME Japanese, Chinese, Cantonese
  • UE5
  • Unity
  • Steam(Blender, Vroid Studio)
  • Wondershare Filmora
  • GIMP

とりあえずブラウザやプラットフォーム系のソフトウェアを入れていけば、それにリンクされている設定なりアプリも繋がるのでなんとかなる感じです。

ブラウザのアカウントにログインすればブックマークやパスワード情報も引き継がれますし、SteamをインストールすればBlendarやVroid StudioといったソフトもSteamのライブラリから芋づる式にセットアップしていけます。

MySQLのデータベース復旧でDataフォルダを全書き換えする

ところがMySQLはインストール後にデータベースフォルダをコピペするだけではうまくいきません。自動取引プログラムに使っているDBで、秒足や分足のヒストリカルデータは今からでは取れないので復旧できないと手痛いです。

ちなみにYahoo Financeは時間足もなく日足単位で、FXデータならMetaTrader系のデータで1分足以上の単位なら取れそうですが、株式や先物、オプションのデータは貴重です。特にオプションはストライクやDTE、コールやプットと高次元になるのでデータ量も膨大になりますし、外部サービスで補おうとするとかなり高くつくのでなんとかしたいところです。

まずはサービスを停止させ、データが入っている以下のフォルダ(バージョンによって変わる)を古いWindowsに入っていた同じフォルダで上書きしたものの、サービスが起動できずエラーになってしまいます。

  • C:\ProgramData\MySQL\MySQL Server 8.0\Data\

原因をググって調べますが、復旧系はもともとのMySQLが動く前提になっている解説が多く、mysqldumpコマンドを使ったバックアップからの復元処理など、生ファイルだけ残っている状況では使えない説明が多いです。

ちなみにmysqldumpコマンドを使えばCreate Table等のDDL文も含めたSQLが出力されるのでバッチ処理でSQLを流すだけで復旧できます。

自分の場合はRawファイルしかないのでファイルそのものから復旧する方法を調べるものの、今度はfrmの定義ファイルを使ったMyISAM形式のものばかり…。

InnoDB形式でOSファイルバックアップからの復旧

InnoDBではibd形式のファイル(データレコードが入っている)しかなく、試しに元に戻した状態で、データベースフォルダ(データベース名のフォルダで中にはibdファイルが入っている)をコピーして起動したものの、そもそもデータベースのスキーマが作成されてなくて表示されませんでした。

今度はデータベースのスキーマを作ってからコピーしてもテーブルは表示されず、調べてみるとInnoDBのテーブル定義等のDDL系メタデータはDataフォルダ直下のibdata1ファイルに保存されていました。

ということでibdata1ファイルの復旧手段に絞って調べてみると、こちらのサイトでInnoDBからのリストア方法が書かれたのでその手順に従って…、

と思ったらStep1に書いてあるmy.cnfがみつからずいきなり躓きます。Cドライブ以下を全検索してもないので、どうやらこれまた解説とはバージョンが違うようです。

Dataの一つ上の階層(C:\ProgramData\MySQL\MySQL Server 8.0\)にmy.iniというそれらしきものもありましたが、中身を見ると別物のようで、my.cnfの中で指定するように書かれている‘innodb_log_file_size‘のパラメータ設定に使うib_logfile0ファイル自体も存在しないのでStep1は飛ばすことに。

とりあえず似たようなibtmp1とib_buffer_poolファイルをコピーすることにして以下のファイルだけ上書きするようにしました。

  • ibdata1
  • ibtmp1
  • ib_buffer_pool
  • Dataフォルダ下のデータベースフォルダ

と、無事サービスは起動させることができ、中身を見るとデータベースやテーブルやビューの定義、中のデータもアクセス可能でリストアできました。

その前に試した全上書きでサービスが起動できなかったのは、上記以外のファイルに起動に関連する内容が入ってるようで、以前のWindowsのPC固有のデータをもってるから起動できなかったようです。

MySQL Workbench 8.0 CEのエラー対応

これで復旧自体は大丈夫なのですが、なぜかMySQL Workbenchの起動時に「Restore Workspace Could not read contents of ~」というエラーメッセージが出てしまいます

Ignoreを押せば普通にテーブルデータにはアクセスできるので問題はないのですが、気持ち悪いので調べてみるとStack Exchangeで同様の事象が報告されてました

どうやら直近のセッションの状態がリストアできないために起こっているということで(上書きしたんだから当然ですが)、以下のフォルダ内のファイルをすべて消せば解決するとのこと。

  • C:\Users\YOURUSER\AppData\Roaming\MySQL\Workbench\sql_workspaces

はたして記載通りにするとエラーはちゃんとなくなってくれました。

ということで手こずりましたが、このメモを見れば次からは時間を短縮できそうです。


0 件のコメント :

コメントを投稿