今週頭に謎のアップデートで壊れてしまったLXD環境を復旧します。
復旧というかほとんど作り直しですが。
コンテナのsnapshotのパス
LXDをsnap版に入れ替えるときにパッケージがsnapshotを取っているメッセージが出ていました。 もしかしたらデータ残っているかもと思いサルベージしました。
- snapshotのパス
/var/lib/snapd/snapshots/に一式固まっていました。
masashi@PC-ubuntu:~$ sudo ls -l /var/lib/snapd/snapshots/4_lxd_4.0.5_19188.zip -rw------- 1 root root 8319636416 2月 3 00:29 /var/lib/snapd/snapshots/4_lxd_4.0.5_19188.zip
masashi@PC-ubuntu:~/lxd_snapshots$ sudo zipinfo /var/lib/snapd/snapshots/4_lxd_4.0.5_19188.zip Archive: /var/lib/snapd/snapshots/4_lxd_4.0.5_19188.zip Zip file size: 8319636416 bytes, number of entries: 5 -rw---- 2.0 fat 8319630787 bX stor 80-000-00 00:00 archive.tgz -rw---- 2.0 fat 332 bX stor 80-000-00 00:00 user/root.tgz -rw---- 2.0 fat 3983 bX stor 80-000-00 00:00 user/masashi.tgz -rw---- 2.0 fat 585 bX defN 80-000-00 00:00 meta.json -rw---- 2.0 fat 97 bX defN 80-000-00 00:00 meta.sha3_384 5 files, 8319635784 bytes uncompressed, 8319635586 bytes compressed: 0.0%
archive.tgzの中にコンテナのパスが残っていました。
各ディレクトリの下はrootfsがあってルートディレクトリになっています。
masashi@PC-ubuntu:~/lxd_snapshots$ sudo ls common/lxd/storage-pools/default/containers
cent7-wp debian firefly lxdMosaic transmission ubuntu-pr ubuntu16
コンテナの整理
復旧するコンテナの整理をします。
一度テスト的に作って使っていないものは作り直しません。
- cent7-wp
- ローカルWordpress 使わなかったので捨て
- debian
- 使う
- firefly
- 使う
- lxdMosaic
- コンテナWeb管理 使わなかったので捨て
- transmission
- Transmissionサーバ 使わなかったので捨て
- ubuntu-pr
- コンテナ練習用サーバ 使わない
- ubuntu16
- Dokuwikiサーバ 使う
というわけでdebian、firefly、ubuntu16のコンテナ再作成とデータ復旧を行います。
インスタンス作成やパッケージインストールは割愛します。
debian
rogueプレイ用なので実は復旧する様なデータなしです。
スコアのデータがどこにあるかわからないので作り直して完了。
rogueのスコアは遊び直して伸ばします。
firefly
これは実は復旧できませんでした。
DBのディレクトリをサルベージできたので、mysqlのフォルダ(/ver/lib/mysql)配下に突っ込んでみましたが、オン中にlxdの構成変更されてしまったのでテーブルにロックかかってしまったみたいです。
root@firefly:~/mysql# mysql -u root -p Enter password: Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 51 Server version: 10.3.25-MariaDB-0ubuntu0.20.04.1 Ubuntu 20.04 Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MariaDB [(none)]> MariaDB [(none)]> show databases; +--------------------+ | Database | +--------------------+ | fireflyiii | | information_schema | | mysql | | performance_schema | +--------------------+ 4 rows in set (0.001 sec)
ちゃんとdatabaseは見えてるのですが、
root@firefly:~# mysqldump -u root -p --databases fireflyiii > fireflydb Enter password: mysqldump: Got error: 1932: "Table 'fireflyiii.2fa_tokens' doesn't exist in engine" when using LOCK TABLES
mysqldumpもダメで、
MariaDB [fireflyiii]> check table accounts; +---------------------+-------+----------+-----------------------------------------------------+ | Table | Op | Msg_type | Msg_text | +---------------------+-------+----------+-----------------------------------------------------+ | fireflyiii.accounts | check | Error | Table 'fireflyiii.accounts' doesn't exist in engine | | fireflyiii.accounts | check | status | Operation failed | +---------------------+-------+----------+-----------------------------------------------------+ 2 rows in set (0.000 sec) MariaDB [fireflyiii]> MariaDB [fireflyiii]> select * from accounts; ERROR 1932 (42S02): Table 'fireflyiii.accounts' doesn't exist in engine
色々テーブルをcheckしたのですが、スキーマが無いと言われてしまいました。
DBの復旧は明るくないため諦めました。
勉強代と思ってバックアップを定期的にやるようにします。
まあマネーフローを確認する目的で入れていて、How toは大体つかめたのでまた今月からやり直します。
Dokuwiki
これも新規コンテナでパッケージも新しいもので作り直しました。
php7.0 -> 7.4になりました。
Dokuwikiのデータファイルはディレクトリ丸ごとコピーすればOKなのでサルベージしたディレクトリをコピーして完了です。
root@dokuwiki:~# cp -pr dokuwikidir/data /var/lib/dokuwiki/
これだけで復旧完了です。
また、Markdownプラグインのmarkdowkuを入れていたのですが、これもバージョンアップされていてバグがあるらしく動きませんでした。
2021/02/06 03:33:26 [error] 19371#19371: *17 FastCGI sent in stderr: "PHP message: PHP Fatal error: Uncaught Error: Class 'Doku_Handler_Quote' not found in /var/lib/dokuwiki/lib/plugins/markdowku/syntax/blockquotes.php:95
https://chiilabo.com/2020/08/fatal-error-class-doku_ha/
これはレイアウトだけの問題なので他の入れるなり対策します。
一応データ復旧しました。
まとめ
使っているコンテナのみの復旧作業を試みました。
作り直してデータをインポートすることを想定していましたが、救えたのはDokuwikiだけでした。
勝率33%ですね。
家だけで使うツールだからと言ってデータ消失は悲しいもので、バックアップの重要性を思い知らされました。
システムはどうにでもなるので、やはりデータを重点的にバックアップしておかないとですね。