いんくらyochさんの日記

興味あることの備忘録

InfluxDB v1 tsmファイルのインポート

M5Stackの有線化の理由にラズパイ3上のDB書き込みに失敗することがままあるためだったが、よくよく調べるとメモリ不足でinfluxdbが再起動しているためだった。
メモリ不足が起きるとtsmファイルが読み込めずに破損判定され、ファイル名に.badマークが付きファイルが持つ期間分のデータが欠損することになる。
しかし、実際にtsmファイルが壊れていることは少ないためリネームして戻してみたが再びbadとなることから、badマークのtsmをエクスポート・インポートする作業で戻せないかやってみた。
Grokやcopilotにいろいろ聞きながら手順が確立できたので、メモ。

  1. エクスポートのツールtsm_restoreをビルド
  2. .tsm.badをテキストでエクスポート
  3. テキストファイルをインポート

cacheサイズが48mでもcannot allocate memoryになっていたので16mまで落としたが、メモリ不足しないようであればリネームだけでも戻せるかもしれない。
 
【tsm_restoreのビルド】
githubよりcloneしたら、tsm_restoreディレクトリに移って下記を実行。
go mod tidyが暗号化pkgあたりでエラーで止まるが、そのままビルドに進んでもバイナリは生成された。
使用したgoはv1.15である。

$ sudo apt install golang
$ go mod_init tsm_restore 
$ go mod tidy 
$ go build -o tsm_restore

github.com

【エクスポート・インポート】
パイプでつなぐと1行でエクスポートとインポートができる

$ sudo ./tsm_restore/tsm_restore -db <dbname> -rp <pilocyname> -p <filename.tsm.bad> | influx -import -path /dev/stdin - precision=ns 

成功すると以下のように結果が出る

2025/12/11 18:16:43 Processed 0 commands 
2025/12/11 18:16:43 Processed 44 inserts 
2025/12/11 18:16:43 Failed 0 inserts 

【influxdb.conf】

  cache-max-memory-size = "16m"
  cache-snapshot-memory-size = "5m"
  series-id-set-cache-size = 100

M5 LAN MODULE 13.2

発電モニターのM5stackを有線LAN化するため、M5stamp-picoをLAN MODULEとつないで、dockerコンテナで起動したInfluxDBにPOSTできるか確認してみた。

テスト用のコードを書いて試したところ、DHCPでアドレスを取得して、DBにPOSTできることが分かったので、M5stack側へ移植してみたが、エラーコード400で失敗しているようで、原因調査中。
ライブラリはM5Module-LAN-13.2とM5-EthernetとArduinoHttpClientを利用。
あと、M5stackライブラリもWiFi使わないのでビルドエラーとなることから、M5unifiedに変える必要があった。

フロントタイヤ交換

土曜の午前中にリアタイヤの組付けを行った。

続いてフロントタイヤを取り外し、古いタイヤを外してホイールを洗浄した。
日曜にフロントタイヤをホイールに付けて、ベアリング交換とホイールバランスの調整をした。
フロントタイヤはビードがなかなか上がらず、3回も空気の入れ直しをしたが、300kPa超で両方とも上がった。

ベアリングのインストールは、10mmの寸切りネジと29mmのソケットを使って、ディスタンスカラーに当たるか当たらないかのスキマを空けた。
ソケットの径は、フロントはKTCの29mm1/2、リアはTONEの34mm1/2がベアリング外周にピッタリとなる。

ホイールバランスは、もともと付いてた30gの重りより、さらに35g必要だったので、月曜に2りんかんでウェイトを買ってきた。
買ったウェイトはキャストホイール用なので、釣り具の重りにすり割り入れたもののほうが見た目が良くなると思う。

フロントタイヤを組付け後、近所を試走してみたが、特に異常はなさそうだ。
古タイヤは2りんかんで有料で引き取ってくれるとのことで、後日持っていく。