我插入了使用主机名的数据。令人讨厌的是我要将域名从.lan更改为.mydomain.com
显然,我希望能够搜索机器的历史数据,因为它跨越了这一变化。
我可以将标签定义从machine.lan更新到machine.mydomain.com吗?
答案 0 :(得分:6)
虽然@ Michael的回答是正确的,因为您无法通过InfluxDB命令更改标记值,但您可以编写一个客户端脚本,通过在测量中插入"duplicate"点来更改标记的值相同的时间戳,字段集和标记集,但所需的标记的值将更改。
指向错误的标记(Line Protocol格式):
cpu,hostname=machine.lan cpu=50 1514970123
运行后
INSERT cpu,hostname=machine.mydomain.com cpu=50 1514970123
SELECT * FROM CPU将包含
cpu,hostname=machine.lan cpu=50 1514970123
cpu,hostname=machine.mydomain.com cpu=50 1514970123
脚本运行所有INSERT命令后,您需要删除旧的标记值的过时系列点:
DROP SERIES FROM cpu WHERE hostname='machine.lan'
当然,效率极低(特别注意this bug),如果您需要将标记值更新为another tag value that other points you don't want to drop already have,则不能仅DROP SERIES
。所以请vote for InfluxDB to implement tag renaming,特别是根据WHERE
查询更改标记值。或者考虑另一个允许您使用常规SQL的时间序列数据库,例如Timescale。
答案 1 :(得分:4)
不幸的是,没有办法在InfluxDB中更改历史数据的标记名称。
答案 2 :(得分:1)
GitHub上已有一个打开的功能请求。 https://github.com/influxdata/influxdb/issues/4157
潮流开发者建议的一个可能的解决方案,如果你想要全部转储,修改,重新导入路径(野蛮但有效),这个评论可能会有所帮助。
https://github.com/influxdata/influxdb/issues/3904#issuecomment-268918613