influxdb升级:1.3.3升级到1.7.7

目录

官方升级教程

旧数据支持tsi

启用tsi

重启influxdb

在服务器升级遇到的问题

升级后的效果



官方升级教程

https://docs.influxdata.com/influxdb/v1.7/administration/upgrading/#upgrading-influxdb-1-3-1-4-tsi-preview-enabled-to-1-7-x-tsi-enabled

元数据3.7G左右,使用的influxdb:1.7镜像。

旧数据支持tsi

https://docs.influxdata.com/influxdb/v1.7/tools/influx_inspect/#buildtsi

[root@localhost ~]# influx_inspect buildtsi -datadir /var/lib/influxdb/data/ -waldir /var/lib/influxb/wal/
You are currently running as root. This will build your
index files with root ownership and will be inaccessible
if you run influxd as a non-root user. You should run
buildtsi as the same user you are running influxd.
Are you sure you want to continue? (y/N): y
2019-08-26T07:57:20.854669Z	info	Rebuilding database	{"log_id": "0HVEXrPW000", "name": "_internal"}
2019-08-26T07:57:20.863779Z	info	Rebuilding retention policy	{"log_id": "0HVEXrPW000", "db_instance": "_internal", "db_rp": "monitor"}
2019-08-26T07:57:20.864092Z	info	Rebuilding shard	{"log_id": "0HVEXrPW000", "db_instance": "_internal", "db_rp": "monitor", "db_shard_id": 3}
2019-08-26T07:57:20.864199Z	info	Checking index path	{"log_id": "0HVEXrPW000", "db_instance": "_internal", "db_rp": "monitor", "db_shard_id": 3, "path": "/root/metric/data/_internal/monitor/3/index"}
2019-08-26T07:57:20.864218Z	info	Opening shard	{"log_id": "0HVEXrPW000", "db_instance": "_internal", "db_rp": "monitor", "db_shard_id": 3}
2019-08-26T07:57:20.864133Z	info	Rebuilding shard	{"log_id": "0HVEXrPW000", "db_instance": "_internal", "db_rp": "monitor", "db_shard_id": 4}
2019-08-26T07:57:20.864254Z	info	Checking index path	{"log_id": "0HVEXrPW000", "db_instance": "_internal", "db_rp": "monitor", "db_shard_id": 4, "path": "/root/metric/data/_internal/monitor/4/index"}
2019-08-26T07:57:20.864281Z	info	Opening shard	{"log_id": "0HVEXrPW000", "db_instance": "_internal", "db_rp": "monitor", "db_shard_id": 4}
2019-08-26T07:57:20.864290Z	info	Cleaning up partial index from previous run, if any	{"log_id": "0HVEXrPW000", "db_instance": "_internal", "db_rp": "monitor", "db_shard_id": 4}
2019-08-26T07:57:20.864372Z	info	Opening tsi index in temporary location	{"log_id": "0HVEXrPW000", "db_instance": "_internal", "db_rp": "monitor", "db_shard_id": 4, "path": "/root/metric/data/_internal/monitor/4/.index"}
2019-08-26T07:57:20.864228Z	info	Cleaning up partial index from previous run, if any	{"log_id": "0HVEXrPW000", "db_instance": "_internal", "db_rp": "monitor", "db_shard_id": 3}
2019-08-26T07:57:20.865055Z	info	Opening tsi index in temporary location	{"log_id": "0HVEXrPW000", "db_instance": "_internal", "db_rp": "monitor", "db_shard_id": 3, "path": "/root/metric/data/_internal/monitor/3/.index"}
2019-08-26T07:57:20.874663Z	info	index opened with 8 partitions	{"log_id": "0HVEXrPW000", "db_instance": "_internal", "db_rp": "monitor", "db_shard_id": 4, "index": "tsi"}
2019-08-26T07:57:20.874912Z	info	Iterating over tsm files	{"log_id": "0HVEXrPW000", "db_instance": "_internal", "db_rp": "monitor", "db_shard_id": 4}
2019-08-26T07:57:20.874933Z	info	Processing tsm file	{"log_id": "0HVEXrPW000", "db_instance": "_internal", "db_rp": "monitor", "db_shard_id": 4, "path": "/root/metric/data/_internal/monitor/4/000000002-000000002.tsm"}
2019-08-26T07:57:20.874929Z	info	index opened with 8 partitions	{"log_id": "0HVEXrPW000", "db_instance": "_internal", "db_rp": "monitor", "db_shard_id": 3, "index": "tsi"}
2019-08-26T07:57:20.875026Z	info	Iterating over tsm files	{"log_id": "0HVEXrPW000", "db_instance": "_internal", "db_rp": "monitor", "db_shard_id": 3}
2019-08-26T07:57:20.875040Z	info	Processing tsm file	{"log_id": "0HVEXrPW000", "db_instance": "_internal", "db_rp": "monitor", "db_shard_id": 3, "path": "/root/metric/data/_internal/monitor/3/000000001-000000001.tsm"}
2019-08-26T07:57:20.929743Z	info	Building cache from wal files	{"log_id": "0HVEXrPW000", "db_instance": "_internal", "db_rp": "monitor", "db_shard_id": 3}
2019-08-26T07:57:20.929848Z	info	Reading file	{"log_id": "0HVEXrPW000", "db_instance": "_internal", "db_rp": "monitor", "db_shard_id": 3, "service": "cacheloader", "path": "/root/metric/wal/_internal/monitor/3/_00005.wal", "size": 0}
2019-08-26T07:57:20.929874Z	info	Iterating over cache	{"log_id": "0HVEXrPW000", "db_instance": "_internal", "db_rp": "monitor", "db_shard_id": 3}
2019-08-26T07:57:20.930382Z	info	Building cache from wal files	{"log_id": "0HVEXrPW000", "db_instance": "_internal", "db_rp": "monitor", "db_shard_id": 4}
2019-08-26T07:57:20.930438Z	info	Reading file	{"log_id": "0HVEXrPW000", "db_instance": "_internal", "db_rp": "monitor", "db_shard_id": 4, "service": "cacheloader", "path": "/root/metric/wal/_internal/monitor/4/_00007.wal", "size": 0}
2019-08-26T07:57:20.930455Z	info	Iterating over cache	{"log_id": "0HVEXrPW000", "db_instance": "_internal", "db_rp": "monitor", "db_shard_id": 4}
2019-08-26T07:57:20.932220Z	info	compacting index	{"log_id": "0HVEXrPW000", "db_instance": "_internal", "db_rp": "monitor", "db_shard_id": 4}
2019-08-26T07:57:20.932472Z	info	Closing tsi index	{"log_id": "0HVEXrPW000", "db_instance": "_internal", "db_rp": "monitor", "db_shard_id": 4}
2019-08-26T07:57:20.932673Z	info	Moving tsi to permanent location	{"log_id": "0HVEXrPW000", "db_instance": "_internal", "db_rp": "monitor", "db_shard_id": 4}
2019-08-26T07:57:20.932755Z	info	Rebuilding shard	{"log_id": "0HVEXrPW000", "db_instance": "_internal", "db_rp": "monitor", "db_shard_id": 5}
2019-08-26T07:57:20.932769Z	info	Checking index path	{"log_id": "0HVEXrPW000", "db_instance": "_internal", "db_rp": "monitor", "db_shard_id": 5, "path": "/root/metric/data/_internal/monitor/5/index"}
2019-08-26T07:57:20.932790Z	info	Opening shard	{"log_id": "0HVEXrPW000", "db_instance": "_internal", "db_rp": "monitor", "db_shard_id": 5}
2019-08-26T07:57:20.932805Z	info	Cleaning up partial index from previous run, if any	{"log_id": "0HVEXrPW000", "db_instance": "_internal", "db_rp": "monitor", "db_shard_id": 5}
2019-08-26T07:57:20.933295Z	info	Opening tsi index in temporary location	{"log_id": "0HVEXrPW000", "db_instance": "_internal", "db_rp": "monitor", "db_shard_id": 5, "path": "/root/metric/data/_internal/monitor/5/.index"}
2019-08-26T07:57:20.934577Z	info	compacting index	{"log_id": "0HVEXrPW000", "db_instance": "_internal", "db_rp": "monitor", "db_shard_id": 3}
2019-08-26T07:57:20.934628Z	info	Closing tsi index	{"log_id": "0HVEXrPW000", "db_instance": "_internal", "db_rp": "monitor", "db_shard_id": 3}
2019-08-26T07:57:20.934825Z	info	Moving tsi to permanent location	{"log_id": "0HVEXrPW000", "db_instance": "_internal", "db_rp": "monitor", "db_shard_id": 3}
2019-08-26T07:57:20.934885Z	info	Rebuilding shard	{"log_id": "0HVEXrPW000", "db_instance": "_internal", "db_rp": "monitor", "db_shard_id": 6}
2019-08-26T07:57:20.934912Z	info	Checking index path	{"log_id": "0HVEXrPW000", "db_instance": "_internal", "db_rp": "monitor", "db_shard_id": 6, "path": "/root/metric/data/_internal/monitor/6/index"}
2019-08-26T07:57:20.934933Z	info	Opening shard	{"log_id": "0HVEXrPW000", "db_instance": "_internal", "db_rp": "monitor", "db_shard_id": 6}
2019-08-26T07:57:20.934941Z	info	Cleaning up partial index from previous run, if any	{"log_id": "0HVEXrPW000", "db_instance": "_internal", "db_rp": "monitor", "db_shard_id": 6}
2019-08-26T07:57:20.935193Z	info	Opening tsi index in temporary location	{"log_id": "0HVEXrPW000", "db_instance": "_internal", "db_rp": "monitor", "db_shard_id": 6, "path": "/root/metric/data/_internal/monitor/6/.index"}
2019-08-26T07:57:20.951449Z	info	index opened with 8 partitions	{"log_id": "0HVEXrPW000", "db_instance": "_internal", "db_rp": "monitor", "db_shard_id": 5, "index": "tsi"}
2019-08-26T07:57:20.952126Z	info	Iterating over tsm files	{"log_id": "0HVEXrPW000", "db_instance": "_internal", "db_rp": "monitor", "db_shard_id": 5}
2019-08-26T07:57:20.952173Z	info	Processing tsm file	{"log_id": "0HVEXrPW000", "db_instance": "_internal", "db_rp": "monitor", "db_shard_id": 5, "path": "/root/metric/data/_internal/monitor/5/000000002-000000002.tsm"}
2019-08-26T07:57:20.955633Z	info	index opened with 8 partitions	{"log_id": "0HVEXrPW000", "db_instance": "_internal", "db_rp": "monitor", "db_shard_id": 6, "index": "tsi"}
2019-08-26T07:57:20.955845Z	info	Iterating over tsm files	{"log_id": "0HVEXrPW000", "db_instance": "_internal", "db_rp": "monitor", "db_shard_id": 6}
2019-08-26T07:57:20.955911Z	info	Building cache from wal files	{"log_id": "0HVEXrPW000", "db_instance": "_internal", "db_rp": "monitor", "db_shard_id": 6}
2019-08-26T07:57:20.955955Z	info	Reading file	{"log_id": "0HVEXrPW000", "db_instance": "_internal", "db_rp": "monitor", "db_shard_id": 6, "service": "cacheloader", "path": "/root/metric/wal/_internal/monitor/6/_00001.wal", "size": 7380148}
2019-08-26T07:57:20.979207Z	info	Building cache from wal files	{"log_id": "0HVEXrPW000", "db_instance": "_internal", "db_rp": "monitor", "db_shard_id": 5}
2019-08-26T07:57:20.979296Z	info	Reading file	{"log_id": "0HVEXrPW000", "db_instance": "_internal", "db_rp": "monitor", "db_shard_id": 5, "service": "cacheloader", "path": "/root/metric/wal/_internal/monitor/5/_00008.wal", "size": 0}
2019-08-26T07:57:20.979314Z	info	Iterating over cache	{"log_id": "0HVEXrPW000", "db_instance": "_internal", "db_rp": "monitor", "db_shard_id": 5}
2019-08-26T07:57:20.980217Z	info	compacting index	{"log_id": "0HVEXrPW000", "db_instance": "_internal", "db_rp": "monitor", "db_shard_id": 5}
2019-08-26T07:57:20.980268Z	info	Closing tsi index	{"log_id": "0HVEXrPW000", "db_instance": "_internal", "db_rp": "monitor", "db_shard_id": 5}
2019-08-26T07:57:20.980487Z	info	Moving tsi to permanent location	{"log_id": "0HVEXrPW000", "db_instance": "_internal", "db_rp": "monitor", "db_shard_id": 5}
2019-08-26T07:57:21.539616Z	info	Iterating over cache	{"log_id": "0HVEXrPW000", "db_instance": "_internal", "db_rp": "monitor", "db_shard_id": 6}
2019-08-26T07:57:21.549596Z	info	compacting index	{"log_id": "0HVEXrPW000", "db_instance": "_internal", "db_rp": "monitor", "db_shard_id": 6}
2019-08-26T07:57:21.549646Z	info	Closing tsi index	{"log_id": "0HVEXrPW000", "db_instance": "_internal", "db_rp": "monitor", "db_shard_id": 6}
2019-08-26T07:57:21.549844Z	info	Moving tsi to permanent location	{"log_id": "0HVEXrPW000", "db_instance": "_internal", "db_rp": "monitor", "db_shard_id": 6}
2019-08-26T07:57:21.550138Z	info	Rebuilding database	{"log_id": "0HVEXrPW000", "name": "k8s"}
2019-08-26T07:57:21.558378Z	info	Rebuilding retention policy	{"log_id": "0HVEXrPW000", "db_instance": "k8s", "db_rp": "default"}
2019-08-26T07:57:21.558518Z	info	Rebuilding shard	{"log_id": "0HVEXrPW000", "db_instance": "k8s", "db_rp": "default", "db_shard_id": 1}
2019-08-26T07:57:21.558561Z	info	Checking index path	{"log_id": "0HVEXrPW000", "db_instance": "k8s", "db_rp": "default", "db_shard_id": 1, "path": "/root/metric/data/k8s/default/1/index"}
2019-08-26T07:57:21.558578Z	info	Opening shard	{"log_id": "0HVEXrPW000", "db_instance": "k8s", "db_rp": "default", "db_shard_id": 1}
2019-08-26T07:57:21.558586Z	info	Cleaning up partial index from previous run, if any	{"log_id": "0HVEXrPW000", "db_instance": "k8s", "db_rp": "default", "db_shard_id": 1}
2019-08-26T07:57:21.558728Z	info	Opening tsi index in temporary location	{"log_id": "0HVEXrPW000", "db_instance": "k8s", "db_rp": "default", "db_shard_id": 1, "path": "/root/metric/data/k8s/default/1/.index"}
2019-08-26T07:57:21.564870Z	info	index opened with 8 partitions	{"log_id": "0HVEXrPW000", "db_instance": "k8s", "db_rp": "default", "db_shard_id": 1, "index": "tsi"}
2019-08-26T07:57:21.565473Z	info	Iterating over tsm files	{"log_id": "0HVEXrPW000", "db_instance": "k8s", "db_rp": "default", "db_shard_id": 1}
2019-08-26T07:57:21.565489Z	info	Processing tsm file	{"log_id": "0HVEXrPW000", "db_instance": "k8s", "db_rp": "default", "db_shard_id": 1, "path": "/root/metric/data/k8s/default/1/000000144-000000006.tsm"}
2019-08-26T07:57:22.818644Z	info	Processing tsm file	{"log_id": "0HVEXrPW000", "db_instance": "k8s", "db_rp": "default", "db_shard_id": 1, "path": "/root/metric/data/k8s/default/1/000000176-000000005.tsm"}
2019-08-26T07:57:23.187057Z	info	Processing tsm file	{"log_id": "0HVEXrPW000", "db_instance": "k8s", "db_rp": "default", "db_shard_id": 1, "path": "/root/metric/data/k8s/default/1/000000180-000000003.tsm"}
2019-08-26T07:57:23.518792Z	info	Processing tsm file	{"log_id": "0HVEXrPW000", "db_instance": "k8s", "db_rp": "default", "db_shard_id": 1, "path": "/root/metric/data/k8s/default/1/000000184-000000003.tsm"}
2019-08-26T07:57:23.952254Z	info	Processing tsm file	{"log_id": "0HVEXrPW000", "db_instance": "k8s", "db_rp": "default", "db_shard_id": 1, "path": "/root/metric/data/k8s/default/1/000000188-000000003.tsm"}
2019-08-26T07:57:24.343331Z	info	Processing tsm file	{"log_id": "0HVEXrPW000", "db_instance": "k8s", "db_rp": "default", "db_shard_id": 1, "path": "/root/metric/data/k8s/default/1/000000190-000000002.tsm"}
2019-08-26T07:57:24.635362Z	info	Building cache from wal files	{"log_id": "0HVEXrPW000", "db_instance": "k8s", "db_rp": "default", "db_shard_id": 1}
2019-08-26T07:57:24.635516Z	info	Reading file	{"log_id": "0HVEXrPW000", "db_instance": "k8s", "db_rp": "default", "db_shard_id": 1, "service": "cacheloader", "path": "/root/metric/wal/k8s/default/1/_02471.wal", "size": 10665519}
2019-08-26T07:57:25.122561Z	info	Reading file	{"log_id": "0HVEXrPW000", "db_instance": "k8s", "db_rp": "default", "db_shard_id": 1, "service": "cacheloader", "path": "/root/metric/wal/k8s/default/1/_02472.wal", "size": 9027917}
2019-08-26T07:57:25.445788Z	info	Iterating over cache	{"log_id": "0HVEXrPW000", "db_instance": "k8s", "db_rp": "default", "db_shard_id": 1}
2019-08-26T07:57:25.982045Z	info	compacting index	{"log_id": "0HVEXrPW000", "db_instance": "k8s", "db_rp": "default", "db_shard_id": 1}
2019-08-26T07:57:25.982158Z	info	Closing tsi index	{"log_id": "0HVEXrPW000", "db_instance": "k8s", "db_rp": "default", "db_shard_id": 1}
2019-08-26T07:57:25.983738Z	info	Moving tsi to permanent location	{"log_id": "0HVEXrPW000", "db_instance": "k8s", "db_rp": "default", "db_shard_id": 1}
2019-08-26T07:57:25.986422Z	info	Rebuilding database	{"log_id": "0HVEXrPW000", "name": "telegraf"}
2019-08-26T07:57:25.997735Z	info	Rebuilding retention policy	{"log_id": "0HVEXrPW000", "db_instance": "telegraf", "db_rp": "autogen"}
2019-08-26T07:57:25.997875Z	info	Rebuilding shard	{"log_id": "0HVEXrPW000", "db_instance": "telegraf", "db_rp": "autogen", "db_shard_id": 2}
2019-08-26T07:57:25.997920Z	info	Checking index path	{"log_id": "0HVEXrPW000", "db_instance": "telegraf", "db_rp": "autogen", "db_shard_id": 2, "path": "/root/metric/data/telegraf/autogen/2/index"}
2019-08-26T07:57:25.997941Z	info	Opening shard	{"log_id": "0HVEXrPW000", "db_instance": "telegraf", "db_rp": "autogen", "db_shard_id": 2}
2019-08-26T07:57:25.997950Z	info	Cleaning up partial index from previous run, if any	{"log_id": "0HVEXrPW000", "db_instance": "telegraf", "db_rp": "autogen", "db_shard_id": 2}
2019-08-26T07:57:25.998028Z	info	Opening tsi index in temporary location	{"log_id": "0HVEXrPW000", "db_instance": "telegraf", "db_rp": "autogen", "db_shard_id": 2, "path": "/root/metric/data/telegraf/autogen/2/.index"}
2019-08-26T07:57:26.004127Z	info	index opened with 8 partitions	{"log_id": "0HVEXrPW000", "db_instance": "telegraf", "db_rp": "autogen", "db_shard_id": 2, "index": "tsi"}
2019-08-26T07:57:26.004273Z	info	Iterating over tsm files	{"log_id": "0HVEXrPW000", "db_instance": "telegraf", "db_rp": "autogen", "db_shard_id": 2}
2019-08-26T07:57:26.004304Z	info	Processing tsm file	{"log_id": "0HVEXrPW000", "db_instance": "telegraf", "db_rp": "autogen", "db_shard_id": 2, "path": "/root/metric/data/telegraf/autogen/2/000001552-000000006.tsm"}
2019-08-26T07:57:27.361098Z	info	Processing tsm file	{"log_id": "0HVEXrPW000", "db_instance": "telegraf", "db_rp": "autogen", "db_shard_id": 2, "path": "/root/metric/data/telegraf/autogen/2/000001552-000000007.tsm"}
2019-08-26T07:57:27.930691Z	info	Processing tsm file	{"log_id": "0HVEXrPW000", "db_instance": "telegraf", "db_rp": "autogen", "db_shard_id": 2, "path": "/root/metric/data/telegraf/autogen/2/000001856-000000005.tsm"}
2019-08-26T07:57:29.195623Z	info	Processing tsm file	{"log_id": "0HVEXrPW000", "db_instance": "telegraf", "db_rp": "autogen", "db_shard_id": 2, "path": "/root/metric/data/telegraf/autogen/2/000001860-000000003.tsm"}
2019-08-26T07:57:29.862829Z	info	Building cache from wal files	{"log_id": "0HVEXrPW000", "db_instance": "telegraf", "db_rp": "autogen", "db_shard_id": 2}
2019-08-26T07:57:29.863194Z	info	Reading file	{"log_id": "0HVEXrPW000", "db_instance": "telegraf", "db_rp": "autogen", "db_shard_id": 2, "service": "cacheloader", "path": "/root/metric/wal/telegraf/autogen/2/_56527.wal", "size": 12411407}
2019-08-26T07:57:30.207454Z	info	Reading file	{"log_id": "0HVEXrPW000", "db_instance": "telegraf", "db_rp": "autogen", "db_shard_id": 2, "service": "cacheloader", "path": "/root/metric/wal/telegraf/autogen/2/_56528.wal", "size": 10828085}
2019-08-26T07:57:30.596591Z	info	Reading file	{"log_id": "0HVEXrPW000", "db_instance": "telegraf", "db_rp": "autogen", "db_shard_id": 2, "service": "cacheloader", "path": "/root/metric/wal/telegraf/autogen/2/_56529.wal", "size": 11425247}
2019-08-26T07:57:30.884383Z	info	Reading file	{"log_id": "0HVEXrPW000", "db_instance": "telegraf", "db_rp": "autogen", "db_shard_id": 2, "service": "cacheloader", "path": "/root/metric/wal/telegraf/autogen/2/_56530.wal", "size": 11469851}
2019-08-26T07:57:31.220411Z	info	Reading file	{"log_id": "0HVEXrPW000", "db_instance": "telegraf", "db_rp": "autogen", "db_shard_id": 2, "service": "cacheloader", "path": "/root/metric/wal/telegraf/autogen/2/_56531.wal", "size": 10618393}
2019-08-26T07:57:31.608354Z	info	Reading file	{"log_id": "0HVEXrPW000", "db_instance": "telegraf", "db_rp": "autogen", "db_shard_id": 2, "service": "cacheloader", "path": "/root/metric/wal/telegraf/autogen/2/_56532.wal", "size": 10588369}
2019-08-26T07:57:31.836842Z	info	Reading file	{"log_id": "0HVEXrPW000", "db_instance": "telegraf", "db_rp": "autogen", "db_shard_id": 2, "service": "cacheloader", "path": "/root/metric/wal/telegraf/autogen/2/_56533.wal", "size": 11564132}
2019-08-26T07:57:32.118164Z	info	Reading file	{"log_id": "0HVEXrPW000", "db_instance": "telegraf", "db_rp": "autogen", "db_shard_id": 2, "service": "cacheloader", "path": "/root/metric/wal/telegraf/autogen/2/_56534.wal", "size": 10643992}
2019-08-26T07:57:32.435485Z	info	Reading file	{"log_id": "0HVEXrPW000", "db_instance": "telegraf", "db_rp": "autogen", "db_shard_id": 2, "service": "cacheloader", "path": "/root/metric/wal/telegraf/autogen/2/_56535.wal", "size": 207}
2019-08-26T07:57:32.435626Z	info	Iterating over cache	{"log_id": "0HVEXrPW000", "db_instance": "telegraf", "db_rp": "autogen", "db_shard_id": 2}
2019-08-26T07:57:33.625031Z	info	compacting index	{"log_id": "0HVEXrPW000", "db_instance": "telegraf", "db_rp": "autogen", "db_shard_id": 2}
2019-08-26T07:57:33.625137Z	info	Closing tsi index	{"log_id": "0HVEXrPW000", "db_instance": "telegraf", "db_rp": "autogen", "db_shard_id": 2}
2019-08-26T07:57:33.625544Z	info	Moving tsi to permanent location	{"log_id": "0HVEXrPW000", "db_instance": "telegraf", "db_rp": "autogen", "db_shard_id": 2}

执行完后,可以看到有新增内容。虽说由新增内容,但是目录大小跟之前一样(即跟执行influx_inspect buildtsi之前一样)。

1. 新增_series目录
   在/var/lib/influxdb/data目录下,对应数据库名目录下,新增了_series目录。
2. 在_series目录下新增00,01,02,03,04,05,06,07目录。
   每个目录下有文件名0000
   内容如下(应该有乱码)
   SSEG΁tsm1_filestordatabastelegrafenginetsmhostname
                                                  d881c0f2c842id2path)/var/lib/influxdb/data/telegraf/autogen/2retentionPolicyautogenwalPath(/var/lib/influxdb/wal/telegraf/autogen/2 
tsm1_wadatabasek8senginetsmhostname
                                   d881c0f2c842id1path$/var/lib/influxdb/data/k8s/default/1retentionPolicydefaultwalPath#/var/lib/influxdb/wal/k8s/default/1́ 
tsm1_cachdatabase	_internalenginetsmhostname
                                                  d881c0f2c842id4path*/var/lib/influxdb/data/_internal/monitor/4retentionPolicymonitorwalPath)/var/lib/influxdb/wal/_internal/monitor/4chostname
queryExecutohostname                         d881c0f2c842"(
                    d881c0f2c842*%
subscribehostname
                 d881c0f2c842
3. 在数据库名目录下的保留策略目录下对应得shard id目录下,新增index目录
   index目录下分别新增0,1,2,3,4,5,6,7目录,每个目录下都新增以下两个文件:
   L0-00000001.tsl  MANIFEST 

启用tsi

修改influxdb.conf 

...
[data]
...
index-version = "tsi1"
...

重启influxdb

============================分界线===================

在服务器升级遇到的问题

上面描述的是昨天使用influxdb:1.7版本的镜像测试是没问题的。

今天就打算把这整个升级的放到公司uat环境,拉的镜像版本是influxdb:1.7.7,但是在执行buildtsi以后就出问题了,报了oom错误。

influxdb:1.7.7

元数据大小不知道是8.7G还是多少,测试之前忘了看数据大小了。

fatal error: runtime: out of memory

runtime stack:
runtime.throw(0xb5212f, 0x16)
	/usr/local/go/src/runtime/panic.go:608 +0x72
runtime.sysMap(0xc040000000, 0x4000000, 0x10f6df8)
	/usr/local/go/src/runtime/mem_linux.go:156 +0xc7
runtime.(*mheap).sysAlloc(0x10dd5a0, 0x4000000, 0x158003d0a23, 0x7ffd82ff1610)
	/usr/local/go/src/runtime/malloc.go:619 +0x1c7
runtime.(*mheap).grow(0x10dd5a0, 0xc8, 0x0)
	/usr/local/go/src/runtime/mheap.go:920 +0x42
runtime.(*mheap).allocSpanLocked(0x10dd5a0, 0xc8, 0x10f6e08, 0x0)
	/usr/local/go/src/runtime/mheap.go:848 +0x337
runtime.(*mheap).alloc_m(0x10dd5a0, 0xc8, 0x101, 0xc988f8)
	/usr/local/go/src/runtime/mheap.go:692 +0x119
runtime.(*mheap).alloc.func1()
	/usr/local/go/src/runtime/mheap.go:759 +0x4c
runtime.(*mheap).alloc(0x10dd5a0, 0xc8, 0x7ffd82010101, 0x426860)
	/usr/local/go/src/runtime/mheap.go:758 +0x8a
runtime.largeAlloc(0x18e964, 0x450101, 0xc03fe2a000)
	/usr/local/go/src/runtime/malloc.go:1019 +0x97
runtime.mallocgc.func1()
	/usr/local/go/src/runtime/malloc.go:914 +0x46
runtime.systemstack(0x4569d9)
	/usr/local/go/src/runtime/asm_amd64.s:351 +0x66
runtime.mstart()
	/usr/local/go/src/runtime/proc.go:1229

goroutine 11963 [running]:
runtime.systemstack_switch()
	/usr/local/go/src/runtime/asm_amd64.s:311 fp=0xc017cc79a0 sp=0xc017cc7998 pc=0x456ad0
runtime.mallocgc(0x18e964, 0xa56a60, 0x18e301, 0x3fb)
	/usr/local/go/src/runtime/malloc.go:913 +0x896 fp=0xc017cc7a40 sp=0xc017cc79a0 pc=0x40daa6
runtime.makeslice(0xa56a60, 0x0, 0x18e964, 0xc03fbae000, 0x3fc, 0x400)
	/usr/local/go/src/runtime/slice.go:70 +0x77 fp=0xc017cc7a70 sp=0xc017cc7a40 pc=0x441e57
github.com/influxdata/influxdb/tsdb.GenerateSeriesKeys(0xc03fba8000, 0x3fc, 0x400, 0xc03fbae000, 0x3fc, 0x400, 0x5, 0x4, 0x4)
	/go/src/github.com/influxdata/influxdb/tsdb/series_file.go:456 +0xa4 fp=0xc017cc7b20 sp=0xc017cc7a70 pc=0x8afab4
github.com/influxdata/influxdb/tsdb.(*SeriesFile).CreateSeriesListIfNotExists(0xc00031e1e0, 0xc03fba8000, 0x3fc, 0x400, 0xc03fbae000, 0x3fc, 0x400, 0x7, 0x7, 0x3, ...)
	/go/src/github.com/influxdata/influxdb/tsdb/series_file.go:143 +0x81 fp=0xc017cc7be0 sp=0xc017cc7b20 pc=0x8ad931
github.com/influxdata/influxdb/tsdb/index/tsi1.(*LogFile).AddSeriesList(0xc0177c9b30, 0xc02ce522a0, 0xc03fba8000, 0x3fc, 0x400, 0xc03fbae000, 0x3fc, 0x400, 0x0, 0x0, ...)
	/go/src/github.com/influxdata/influxdb/tsdb/index/tsi1/log_file.go:515 +0xb7 fp=0xc017cc7d68 sp=0xc017cc7be0 pc=0x903347
github.com/influxdata/influxdb/tsdb/index/tsi1.(*Partition).createSeriesListIfNotExists(0xc00d967d40, 0xc03fba8000, 0x3fc, 0x400, 0xc03fbae000, 0x3fc, 0x400, 0x0, 0x0, 0x0, ...)
	/go/src/github.com/influxdata/influxdb/tsdb/index/tsi1/partition.go:659 +0x13d fp=0xc017cc7e38 sp=0xc017cc7d68 pc=0x910f2d
github.com/influxdata/influxdb/tsdb/index/tsi1.(*Index).CreateSeriesListIfNotExists.func1(0xc0303b9088, 0xc0177c9860, 0xc0181c1740, 0x8, 0x8, 0xc0181c1800, 0x8, 0x8, 0xc03ef0c1e0)
	/go/src/github.com/influxdata/influxdb/tsdb/index/tsi1/index.go:667 +0x406 fp=0xc017cc7f98 sp=0xc017cc7e38 pc=0x91d916
runtime.goexit()
	/usr/local/go/src/runtime/asm_amd64.s:1333 +0x1 fp=0xc017cc7fa0 sp=0xc017cc7f98 pc=0x458bb1
created by github.com/influxdata/influxdb/tsdb/index/tsi1.(*Index).CreateSeriesListIfNotExists
	/go/src/github.com/influxdata/influxdb/tsdb/index/tsi1/index.go:660 +0x37d

goroutine 1 [chan receive]:
github.com/influxdata/influxdb/cmd/influx_inspect/buildtsi.(*Command).processRetentionPolicy(0xc000128480, 0xc00031e1e0, 0xc0000a66f8, 0x8, 0xc000246410, 0x7, 0xc0002464b0, 0x27, 0xc000246510, 0x26, ...)
	/go/src/github.com/influxdata/influxdb/cmd/influx_inspect/buildtsi/buildtsi.go:196 +0x64e
github.com/influxdata/influxdb/cmd/influx_inspect/buildtsi.(*Command).processDatabase(0xc000128480, 0xc0000a66f8, 0x8, 0xc002837ca0, 0x1f, 0xc002837d80, 0x1e, 0x0, 0x0)
	/go/src/github.com/influxdata/influxdb/cmd/influx_inspect/buildtsi/buildtsi.go:139 +0x58c
github.com/influxdata/influxdb/cmd/influx_inspect/buildtsi.(*Command).run(0xc000128480, 0x7ffd82ff1eef, 0x17, 0x7ffd82ff1f0f, 0x16, 0x0, 0x7)
	/go/src/github.com/influxdata/influxdb/cmd/influx_inspect/buildtsi/buildtsi.go:106 +0x2e9
github.com/influxdata/influxdb/cmd/influx_inspect/buildtsi.(*Command).Run(0xc000128480, 0xc0000aa140, 0x4, 0x4, 0x8, 0xc0000aa140)
	/go/src/github.com/influxdata/influxdb/cmd/influx_inspect/buildtsi/buildtsi.go:76 +0x468
main.(*Main).Run(0xc0000f3f50, 0xc0000aa140, 0x4, 0x4, 0xc0000f3f68, 0x9c0ec1)
	/go/src/github.com/influxdata/influxdb/cmd/influx_inspect/main.go:92 +0xc7d
main.main()
	/go/src/github.com/influxdata/influxdb/cmd/influx_inspect/main.go:27 +0x150

goroutine 11964 [runnable]:
github.com/influxdata/influxdb/tsdb.GenerateSeriesKeys(0xc03fc06000, 0x4c8, 0x555, 0xc03fc0e000, 0x4c8, 0x555, 0x0, 0x0, 0x0)
	/go/src/github.com/influxdata/influxdb/tsdb/series_file.go:455 +0x2d3
github.com/influxdata/influxdb/tsdb.(*SeriesFile).CreateSeriesListIfNotExists(0xc00031e1e0, 0xc03fc06000, 0x4c8, 0x555, 0xc03fc0e000, 0x4c8, 0x555, 0x0, 0x9662, 0x0, ...)
	/go/src/github.com/influxdata/influxdb/tsdb/series_file.go:143 +0x81
github.com/influxdata/influxdb/tsdb/index/tsi1.(*LogFile).AddSeriesList(0xc0177c9c20, 0xc02ce52300, 0xc03fc06000, 0x4c8, 0x555, 0xc03fc0e000, 0x4c8, 0x555, 0x0, 0x0, ...)
	/go/src/github.com/influxdata/influxdb/tsdb/index/tsi1/log_file.go:515 +0xb7
github.com/influxdata/influxdb/tsdb/index/tsi1.(*Partition).createSeriesListIfNotExists(0xc00d967e60, 0xc03fc06000, 0x4c8, 0x555, 0xc03fc0e000, 0x4c8, 0x555, 0x0, 0x0, 0x0, ...)
	/go/src/github.com/influxdata/influxdb/tsdb/index/tsi1/partition.go:659 +0x13d
github.com/influxdata/influxdb/tsdb/index/tsi1.(*Index).CreateSeriesListIfNotExists.func1(0xc0303b9088, 0xc0177c9860, 0xc0181c1740, 0x8, 0x8, 0xc0181c1800, 0x8, 0x8, 0xc03ef0c1e0)
	/go/src/github.com/influxdata/influxdb/tsdb/index/tsi1/index.go:667 +0x406
created by github.com/influxdata/influxdb/tsdb/index/tsi1.(*Index).CreateSeriesListIfNotExists
	/go/src/github.com/influxdata/influxdb/tsdb/index/tsi1/index.go:660 +0x37d

goroutine 2434 [chan receive]:
github.com/influxdata/influxdb/tsdb/index/tsi1.(*Index).CreateSeriesListIfNotExists(0xc0177c9860, 0xc019f42000, 0x2710, 0x2710, 0xc012556000, 0x2710, 0x2710, 0xc0127f6000, 0x2710, 0x2710, ...)
	/go/src/github.com/influxdata/influxdb/tsdb/index/tsi1/index.go:720 +0x400
github.com/influxdata/influxdb/cmd/influx_inspect/buildtsi.IndexTSMFile(0xc0177c9860, 0xc01d7345a0, 0x42, 0x2710, 0xc02d2360c0, 0x0, 0x0, 0x0)
	/go/src/github.com/influxdata/influxdb/cmd/influx_inspect/buildtsi/buildtsi.go:361 +0x4e6
github.com/influxdata/influxdb/cmd/influx_inspect/buildtsi.IndexShard(0xc00031e1e0, 0xc0272fac90, 0x2a, 0xc0272facc0, 0x29, 0x100000, 0x40000000, 0x2710, 0xc02d2360c0, 0xc00004dc00, ...)
	/go/src/github.com/influxdata/influxdb/cmd/influx_inspect/buildtsi/buildtsi.go:251 +0x8cb
github.com/influxdata/influxdb/cmd/influx_inspect/buildtsi.(*Command).processRetentionPolicy.func1(0xc00789bfdc, 0xc003a5e3e0, 0xc000128480, 0xc0000a66f8, 0x8, 0xc000246410, 0x7, 0xc0000aae40, 0xc00031e1e0, 0xc0002464b0, ...)
	/go/src/github.com/influxdata/influxdb/cmd/influx_inspect/buildtsi/buildtsi.go:189 +0x1e5
created by github.com/influxdata/influxdb/cmd/influx_inspect/buildtsi.(*Command).processRetentionPolicy
	/go/src/github.com/influxdata/influxdb/cmd/influx_inspect/buildtsi/buildtsi.go:180 +0x5c7

goroutine 11962 [runnable]:
github.com/influxdata/influxdb/tsdb.AppendSeriesKey(0xc03fc4a000, 0x1aeb9, 0x1d0e90, 0x7f548f8441f1, 0x14, 0xbed2f25, 0xc0050d9500, 0x13, 0x23, 0xc03fc4a000, ...)
	/go/src/github.com/influxdata/influxdb/tsdb/series_file.go:277 +0x9e6
github.com/influxdata/influxdb/tsdb.GenerateSeriesKeys(0xc03fc16000, 0x4a6, 0x555, 0xc03fc1e000, 0x4a6, 0x555, 0x34, 0xa56a60, 0x1)
	/go/src/github.com/influxdata/influxdb/tsdb/series_file.go:460 +0x20b
github.com/influxdata/influxdb/tsdb.(*SeriesFile).CreateSeriesListIfNotExists(0xc00031e1e0, 0xc03fc16000, 0x4a6, 0x555, 0xc03fc1e000, 0x4a6, 0x555, 0x4791cf, 0xc00f1721c0, 0x33, ...)
	/go/src/github.com/influxdata/influxdb/tsdb/series_file.go:143 +0x81
github.com/influxdata/influxdb/tsdb/index/tsi1.(*LogFile).AddSeriesList(0xc0177c9950, 0xc02ce521e0, 0xc03fc16000, 0x4a6, 0x555, 0xc03fc1e000, 0x4a6, 0x555, 0x0, 0x0, ...)
	/go/src/github.com/influxdata/influxdb/tsdb/index/tsi1/log_file.go:515 +0xb7
github.com/influxdata/influxdb/tsdb/index/tsi1.(*Partition).createSeriesListIfNotExists(0xc00d967b00, 0xc03fc16000, 0x4a6, 0x555, 0xc03fc1e000, 0x4a6, 0x555, 0x0, 0x0, 0x0, ...)
	/go/src/github.com/influxdata/influxdb/tsdb/index/tsi1/partition.go:659 +0x13d
github.com/influxdata/influxdb/tsdb/index/tsi1.(*Index).CreateSeriesListIfNotExists.func1(0xc0303b9088, 0xc0177c9860, 0xc0181c1740, 0x8, 0x8, 0xc0181c1800, 0x8, 0x8, 0xc03ef0c1e0)
	/go/src/github.com/influxdata/influxdb/tsdb/index/tsi1/index.go:667 +0x406
created by github.com/influxdata/influxdb/tsdb/index/tsi1.(*Index).CreateSeriesListIfNotExists
	/go/src/github.com/influxdata/influxdb/tsdb/index/tsi1/index.go:660 +0x37d

goroutine 11965 [runnable]:
github.com/influxdata/influxdb/tsdb.AppendSeriesKey(0xc03fe2a000, 0x42d6b, 0x1a9374, 0x7f548f9af89c, 0x14, 0xbd6787a, 0xc010f65500, 0x13, 0x23, 0xc03fe2a000, ...)
	/go/src/github.com/influxdata/influxdb/tsdb/series_file.go:277 +0x9e6
github.com/influxdata/influxdb/tsdb.GenerateSeriesKeys(0xc03fc26000, 0x440, 0x555, 0xc03fc2e000, 0x440, 0x555, 0x89f8, 0x0, 0x8877)
	/go/src/github.com/influxdata/influxdb/tsdb/series_file.go:460 +0x20b
github.com/influxdata/influxdb/tsdb.(*SeriesFile).CreateSeriesListIfNotExists(0xc00031e1e0, 0xc03fc26000, 0x440, 0x555, 0xc03fc2e000, 0x440, 0x555, 0x0, 0x895c, 0x0, ...)
	/go/src/github.com/influxdata/influxdb/tsdb/series_file.go:143 +0x81
github.com/influxdata/influxdb/tsdb/index/tsi1.(*LogFile).AddSeriesList(0xc0177c9a40, 0xc02ce52240, 0xc03fc26000, 0x440, 0x555, 0xc03fc2e000, 0x440, 0x555, 0x0, 0x0, ...)
	/go/src/github.com/influxdata/influxdb/tsdb/index/tsi1/log_file.go:515 +0xb7
github.com/influxdata/influxdb/tsdb/index/tsi1.(*Partition).createSeriesListIfNotExists(0xc00d967c20, 0xc03fc26000, 0x440, 0x555, 0xc03fc2e000, 0x440, 0x555, 0x0, 0x0, 0x0, ...)
	/go/src/github.com/influxdata/influxdb/tsdb/index/tsi1/partition.go:659 +0x13d
github.com/influxdata/influxdb/tsdb/index/tsi1.(*Index).CreateSeriesListIfNotExists.func1(0xc0303b9088, 0xc0177c9860, 0xc0181c1740, 0x8, 0x8, 0xc0181c1800, 0x8, 0x8, 0xc03ef0c1e0)
	/go/src/github.com/influxdata/influxdb/tsdb/index/tsi1/index.go:667 +0x406
created by github.com/influxdata/influxdb/tsdb/index/tsi1.(*Index).CreateSeriesListIfNotExists
	/go/src/github.com/influxdata/influxdb/tsdb/index/tsi1/index.go:660 +0x37d

goroutine 11933 [runnable]:
github.com/influxdata/influxdb/tsdb/index/tsi1.(*logMeasurement).createTagSetIfNotExists(...)
	/go/src/github.com/influxdata/influxdb/tsdb/index/tsi1/log_file.go:1301
github.com/influxdata/influxdb/tsdb/index/tsi1.(*LogFile).execSeriesEntry(0xc01bcf63c0, 0xc03f7e70c0)
	/go/src/github.com/influxdata/influxdb/tsdb/index/tsi1/log_file.go:708 +0x427
github.com/influxdata/influxdb/tsdb/index/tsi1.(*LogFile).execEntry(0xc01bcf63c0, 0xc03f7e70c0)
	/go/src/github.com/influxdata/influxdb/tsdb/index/tsi1/log_file.go:632 +0x71
github.com/influxdata/influxdb/tsdb/index/tsi1.(*LogFile).AddSeriesList(0xc01bcf63c0, 0xc01b676cc0, 0xc03e92e000, 0x4c8, 0x555, 0xc03e936000, 0x4c8, 0x555, 0x0, 0x0, ...)
	/go/src/github.com/influxdata/influxdb/tsdb/index/tsi1/log_file.go:555 +0x5fc
github.com/influxdata/influxdb/tsdb/index/tsi1.(*Partition).createSeriesListIfNotExists(0xc00d9677a0, 0xc03e92e000, 0x4c8, 0x555, 0xc03e936000, 0x4c8, 0x555, 0x0, 0x0, 0x0, ...)
	/go/src/github.com/influxdata/influxdb/tsdb/index/tsi1/partition.go:659 +0x13d
github.com/influxdata/influxdb/tsdb/index/tsi1.(*Index).CreateSeriesListIfNotExists.func1(0xc0302f03cc, 0xc01bcf6000, 0xc028d49380, 0x8, 0x8, 0xc028d49440, 0x8, 0x8, 0xc03b127da0)
	/go/src/github.com/influxdata/influxdb/tsdb/index/tsi1/index.go:667 +0x406
created by github.com/influxdata/influxdb/tsdb/index/tsi1.(*Index).CreateSeriesListIfNotExists
	/go/src/github.com/influxdata/influxdb/tsdb/index/tsi1/index.go:660 +0x37d

goroutine 2417 [chan receive]:
github.com/influxdata/influxdb/tsdb/index/tsi1.(*Index).CreateSeriesListIfNotExists(0xc01bcf6000, 0xc026722000, 0x2710, 0x2710, 0xc02258e000, 0x2710, 0x2710, 0xc00ecb6000, 0x2710, 0x2710, ...)
	/go/src/github.com/influxdata/influxdb/tsdb/index/tsi1/index.go:720 +0x400
github.com/influxdata/influxdb/cmd/influx_inspect/buildtsi.IndexTSMFile(0xc01bcf6000, 0xc02894b310, 0x42, 0x2710, 0xc010013aa0, 0x0, 0x0, 0x0)
	/go/src/github.com/influxdata/influxdb/cmd/influx_inspect/buildtsi/buildtsi.go:361 +0x4e6
github.com/influxdata/influxdb/cmd/influx_inspect/buildtsi.IndexShard(0xc00031e1e0, 0xc009b23860, 0x2a, 0xc009b23890, 0x29, 0x100000, 0x40000000, 0x2710, 0xc010013aa0, 0xb6d600, ...)
	/go/src/github.com/influxdata/influxdb/cmd/influx_inspect/buildtsi/buildtsi.go:251 +0x8cb
github.com/influxdata/influxdb/cmd/influx_inspect/buildtsi.(*Command).processRetentionPolicy.func1(0xc00789bfdc, 0xc003a5e3e0, 0xc000128480, 0xc0000a66f8, 0x8, 0xc000246410, 0x7, 0xc0000aae40, 0xc00031e1e0, 0xc0002464b0, ...)
	/go/src/github.com/influxdata/influxdb/cmd/influx_inspect/buildtsi/buildtsi.go:189 +0x1e5
created by github.com/influxdata/influxdb/cmd/influx_inspect/buildtsi.(*Command).processRetentionPolicy
	/go/src/github.com/influxdata/influxdb/cmd/influx_inspect/buildtsi/buildtsi.go:180 +0x5c7

goroutine 11932 [runnable]:
github.com/influxdata/influxdb/tsdb/index/tsi1.(*LogFile).execSeriesEntry(0xc01bcf65a0, 0xc03fb57b50)
	/go/src/github.com/influxdata/influxdb/tsdb/index/tsi1/log_file.go:719 +0x727
github.com/influxdata/influxdb/tsdb/index/tsi1.(*LogFile).execEntry(0xc01bcf65a0, 0xc03fb57b50)
	/go/src/github.com/influxdata/influxdb/tsdb/index/tsi1/log_file.go:632 +0x71
github.com/influxdata/influxdb/tsdb/index/tsi1.(*LogFile).AddSeriesList(0xc01bcf65a0, 0xc01b676d80, 0xc03e95e000, 0x4c8, 0x555, 0xc03e966000, 0x4c8, 0x555, 0x0, 0x0, ...)
	/go/src/github.com/influxdata/influxdb/tsdb/index/tsi1/log_file.go:555 +0x5fc
github.com/influxdata/influxdb/tsdb/index/tsi1.(*Partition).createSeriesListIfNotExists(0xc00d9679e0, 0xc03e95e000, 0x4c8, 0x555, 0xc03e966000, 0x4c8, 0x555, 0x0, 0x0, 0x0, ...)
	/go/src/github.com/influxdata/influxdb/tsdb/index/tsi1/partition.go:659 +0x13d
github.com/influxdata/influxdb/tsdb/index/tsi1.(*Index).CreateSeriesListIfNotExists.func1(0xc0302f03cc, 0xc01bcf6000, 0xc028d49380, 0x8, 0x8, 0xc028d49440, 0x8, 0x8, 0xc03b127da0)
	/go/src/github.com/influxdata/influxdb/tsdb/index/tsi1/index.go:667 +0x406
created by github.com/influxdata/influxdb/tsdb/index/tsi1.(*Index).CreateSeriesListIfNotExists
	/go/src/github.com/influxdata/influxdb/tsdb/index/tsi1/index.go:660 +0x37d

换回influxdb:1.7后,再次执行buildtsi,一切正常。抽空再研究下是不是1.7.7有什么限制。

 

==================分界线==============

升级后的效果

之前服务器使用的1.3.3,索引为inmem,数据8G+,重启时间约27+s,top查看内存占用53+%

升级到1.7,索引为tsi后运行了几天,数据11G+,重启时间7s,top查看内存占用14%.

可能数据不具备代表性,还会持续观察的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值