influxDBのbackup、join
influxDBのデータをバックアップして、別のinfluxDBにjoinするシェルを作りました。
backupコマンド
開始日時、終了日時などを指定
influxd backup -portable -database "<DB名>" -start <timestamp> -end <timestamp> -host <DBhost> <backuppath>
joinコマンド
<リストア用DB>は一時DBなので、適用な名前をつける。
一時DBにリストアして、データを既存DBにjoinする感じ。
influxd restore -portable -db <DB名> -newdb <リストア用DB名> <backupfile> influx -database '<リストア用DB名>' -execute 'SELECT * INTO <DB名>..:MEASUREMENT FROM /.*/ GROUP BY *' influx -database '<リストア用DB名>' -execute 'DROP DATABASE <リストア用DB名>'
シェルにするとこんな感じ。
cronで日時処理してます。 backup
predate=`date -u "+%Y-%m-%dT%H:%M:%SZ" --date '1 day ago'` enddate=`date -u "+%Y-%m-%dT%H:%M:%SZ"` dbhost=192.168.10.10:8088 bkpath=/etc/influxdb/mysnap influxd backup -portable -database "telegraf" -start $predate -end $enddate -host $dbhost $bkpath
join
bkfile=/etc/influxdb/mysnap/`date +%Y%m%d`/telegraf influxd restore -portable -db telegraf -newdb telegraf_bak $bkfile influx -database 'telegraf_bak' -execute 'SELECT * INTO telegraf..:MEASUREMENT FROM /.*/ GROUP BY *' influx -database 'telegraf_bak' -execute 'DROP DATABASE telegraf_bak'
もっと効率の良いやり方があるかもしれません・・。