見出し画像

TWSNMPのデータベースのクリーンアップとバックアップする機能

TWSNMPをしばらく使っているとデータベースファイルのサイズが大きくなっていく。使っているデータベース(本当はキーバリューストア)は、何度か書いた、

なので、1TBぐらいの大きさには耐えられるはずと思っていた。でも、ネットワーク・ストレージ使って300GBぐらいのサイズになるとログの保存が飛び飛びになるとか、何だか変な動きをしてきた。まあ、保存先をネットワーク・ストレージから内部ディスクにかえればいいぐらいに思っていたが、そこで、困ったことが起こった。容量が足りない!
データベースのファイルはコピーするだけで別の保存場所に移動できるけど内部ディスクは256GBしなないのでコピーできない。新しくデータベースを作るのは、せっかく貯めたログや、せっかく作ったマップがもったいない。今週、どうしようか、ログ検索のダイアログを作りながら、いろいろ考えていた。

データベースのクリーンアップ

データベースファイルのサイズだけ何とか縮小できないか?調べていたら

のコマンドでデータベースファイルを小さくする

usage: bolt compact [options] -o DST SRC
Compact opens a database at SRC path and walks it recursively, copying keys
as they are found from all buckets, to a newly created database at DST path.
The original database is left untouched.

を見つけて、ソースコードを読んでみた。この処理で、データベースのクリーンアップに似たことができるらしい。全データコピーするときに、余分な領域がなくなるということのようだ。

データベースのエクスポート

compactのソースコードを読んでいて、大量に記録されたログやレポートのデータ以外のマップのデータだけ取り出して、エクスポートするアイデアを思いついた。さっきのcompactコマンドは全bucketをコピーしているが、不要なbucketを除外するような処理にすればよいはず!

データベースのバックアップ

更に、一定期間で消えるログを残しておくためのバックアップや、MacのタイムマシンでTWSNMPのデータベースをバックアップ対象にするとバックアップに長い時間かかるようになる問題の対策するアイデアも思いついた。
エクスポートの応用だけどデータベースの必要な項目だけ選んで定期的に、別のデータベースファイルに出力すればバックアップもできると思った。
出力した別のデータベースファイルだけOSのバックアップ対象にすれば、それほど、頻繁にバックアップが作成されないはず。

猫に早く作れと3時に起こされた

昨日、このアイデアの下書きを書いて寝たら、今朝3時に猫に起こされた。
おかげで、また月が見られた。猫は、月が好きなのかもしれない。
仕方ないので、この機能のプログラムを書いてみた。これから試してみるところ。でもかなり眠い。

つづく

開発のための諸経費(機材、Appleの開発者、サーバー運用)に利用します。 ソフトウェアのマニュアルをnoteの記事で提供しています。 サポートによりnoteの運営にも貢献できるのでよろしくお願います。