influxDB 2.1 panic: runtime error: integer divide by zero

最近在搞influxDB 2.1,在导入数据的时候发生了以下错误:

ts=2022-08-01T09:00:13.829576Z lvl=error msg="a panic has occurred" log_id=0c1kFSR0000 handler=panic error="/api/v2/write?bucket=wind-power&org=wlw&precision=ns: runtime error: integer divide by zero" stacktrace="goroutine 643103 [running]:
runtime/debug.Stack()
/home/circleci/.tools/go/src/runtime/debug/stack.go:24 +0x65
github.com/influxdata/influxdb/v2/http.baseHandler.panic({{0x4058600, 0xc0082a9620}}, {0x4077400, 0xc02551a100}, 0x6, {0x3c52600, 0x53e34a0})
/home/circleci/go/src/github.com/influxdata/influxdb/http/router.go:96 +0x1b3
github.com/influxdata/httprouter.(*Router).recv(0xc01871b9e0, {0x4077400, 0xc02551a100}, 0xd)
/home/circleci/go/pkg/mod/github.com/influxdata/httprouter@v1.3.1-0.20191122104820-ee83e2772f69/router.go:361 +0x5e
panic({0x3c52600, 0x53e34a0})
/home/circleci/.tools/go/src/runtime/panic.go:1038 +0x215
github.com/influxdata/influxdb/v2/v1/services/meta.(*ShardGroupInfo).ShardFor(...)
/home/circleci/go/src/github.com/influxdata/influxdb/v1/services/meta/data.go:1439
github.com/influxdata/influxdb/v2/v1/coordinator.(*PointsWriter).MapShards(0xc000342680, 0xc00fec8658)
/home/circleci/go/src/github.com/influxdata/influxdb/v1/coordinator/points_writer.go:237 +0x678
github.com/influxdata/influxdb/v2/v1/coordinator.(*PointsWriter).WritePointsPrivileged(0xc000342680, {0x40a6bc0, 0xc02d742510}, {0xc0498765b0, 0x415f07}, {0x238fa4a, 0x3eadf80}, 0x1, {0xc01174c000, 0x21e2, ...})
/home/circleci/go/src/github.com/influxdata/influxdb/v1/coordinator/points_writer.go:361 +0x189
github.com/influxdata/influxdb/v2/v1/coordinator.(*PointsWriter).WritePoints(0xc00fec8748, {0x40a6bc0, 0xc02d742510}, {0xc0498765b0, 0x203009}, {0x238fa4a, 0x10100c02551a380}, 0x7f9804db8fa8, {0x40b92c8, 0xc02d742990}, ...)
/home/circleci/go/src/github.com/influxdata/influxdb/v1/coordinator/points_writer.go:340 +0x5c
github.com/influxdata/influxdb/v2/storage.(*Engine).WritePoints(0xc00026e300, {0x40a6bc0, 0xc02d742510}, 0xc02551a380, 0x0, {0xc01174c000, 0x21e2, 0x21e3})
/home/circleci/go/src/github.com/influxdata/influxdb/storage/engine.go:265 +0x204
github.com/influxdata/influxdb/v2/storage.(*LoggingPointsWriter).WritePoints(0xc06d5fafc0, {0x40a6bc0, 0xc02d742510}, 0x7484ec425f9b341a, 0xc01da74d3a, {0xc01174c000, 0x21e2, 0x21e3})
/home/circleci/go/src/github.com/influxdata/influxdb/storage/points_writer.go:38 +0xd1
github.com/influxdata/influxdb/v2/http.(*WriteHandler).handleWrite(0xc09a7580e0, {0x4077400, 0xc02551a100}, 0x10000c01c56bc28)
/home/circleci/go/src/github.com/influxdata/influxdb/http/write_handler.go:192 +0x54b
net/http.HandlerFunc.ServeHTTP(0x100000000000000, {0x4077400, 0xc02551a100}, 0x90)
/home/circleci/.tools/go/src/net/http/server.go:2046 +0x2f
github.com/influxdata/httprouter.(*Router).Handler.func1({0x4077400, 0xc02551a100}, 0x3c4d440, {0x0, 0x3b69c00, 0xc06d830cb0})
/home/circleci/go/pkg/mod/github.com/influxdata/httprouter@v1.3.1-0.20191122104820-ee83e2772f69/router.go:325 +0x2c4
github.com/influxdata/httprouter.(*Router).ServeHTTP(0xc01871b9e0, {0x4077400, 0xc02551a100}, 0xc0505e6f00)
/home/circleci/go/pkg/mod/github.com/influxdata/httprouter@v1.3.1-0.20191122104820-ee83e2772f69/router.go:453 +0x4c3
github.com/influxdata/influxdb/v2/http.(*WriteHandler).ServeHTTP(0xd, {0x4077400, 0xc02551a100}, 0x6f5a6f)
/home/circleci/go/src/github.com/influxdata/influxdb/http/write_handler.go:135 +0x27
github.com/go-chi/chi.(*Mux).Mount.func1({0x4077400, 0xc02551a100}, 0xc0505e6f00)
/home/circleci/go/pkg/mod/github.com/go-chi/chi@v4.1.0+incompatible/mux.go:298 +0x13b
net/http.HandlerFunc.ServeHTTP(0x3c2d5a0, {0x4077400, 0xc02551a100}, 0xc049876140)
/home/circleci/.tools/go/src/net/http/server.go:2046 +0x2f
github.com/go-chi/chi.(*Mux).routeHTTP(0xc008396360, {0x4077400, 0xc02551a100}, 0xc0505e6f00)
/home/circleci/go/pkg/mod/github.com/go-chi/chi@v4.1.0+incompatible/mux.go:431 +0x1f9
net/http.HandlerFunc.ServeHTTP(0xc0835cbdd0, {0x4077400, 0xc02551a100}, 0xc00fec90b8)
/home/circleci/.tools/go/src/net/http/server.go:2046 +0x2f
github.com/influxdata/influxdb/v2/kit/transport/http.SetCORS.func1({0x4077400, 0xc02551a100}, 0xc0505e6f00)
/home/circleci/go/src/github.com/influxdata/influxdb/kit/transport/http/middleware.go:36 +0x308
net/http.HandlerFunc.ServeHTTP(0x0, {0x4077400, 0xc02551a100}, 0x203009)
/home/circleci/.tools/go/src/net/http/server.go:2046 +0x2f
github.com/go-chi/chi/middleware.StripSlashes.func1({0x4077400, 0xc02551a100}, 0xc0505e6f00)
/home/circleci/go/pkg/mod/github.com/go-chi/chi@v4.1.0+incompatible/middleware/strip.go:25 +0x102
net/http.HandlerFunc.ServeHTTP(0xc0835cbdd0, {0x4077400, 0xc02551a100}, 0x30)
/home/circleci/.tools/go/src/net/http/server.go:2046 +0x2f
github.com/influxdata/influxdb/v2/kit/transport/http.SkipOptions.func1({0x4077400, 0xc02551a100}, 0xc0505e6f00)
/home/circleci/go/src/github.com/influxdata/influxdb/kit/transport/http/middleware.go:81 +0xb9
net/http.HandlerFunc.ServeHTTP(0xc0835cbe90, {0x4077400, 0xc02551a100}, 0xc00fec9238)
/home/circleci/.tools/go/src/net/http/server.go:2046 +0x2f
github.com/influxdata/influxdb/v2/http.panicMW.func1.1({0x4077400, 0xc02551a100}, 0xc00fec92f0)
/home/circleci/go/src/github.com/influxdata/influxdb/http/router.go:126 +0x9b
net/http.HandlerFunc.ServeHTTP(0x90, {0x4077400, 0xc02551a100}, 0x1000000023dd680)
/home/circleci/.tools/go/src/net/http/server.go:2046 +0x2f
github.com/go-chi/chi.(*Mux).ServeHTTP(0xc008396360, {0x4077400, 0xc02551a100}, 0xc0505e6f00)
/home/circleci/go/pkg/mod/github.com/go-chi/chi@v4.1.0+incompatible/mux.go:70 +0x40e
github.com/influxdata/influxdb/v2/kit/feature.(*Handler).ServeHTTP(0xc04d9277c0, {0x4077400, 0xc02551a100}, 0xc0505e6e00)
/home/circleci/go/src/github.com/influxdata/influxdb/kit/feature/middleware.go:43 +0x3c2
github.com/influxdata/influxdb/v2/http.(*AuthenticationHandler).ServeHTTP(0xc09386de30, {0x4077400, 0xc02551a100}, 0xc0505e6d00)
/home/circleci/go/src/github.com/influxdata/influxdb/http/authentication_middleware.go:127 +0x467
github.com/influxdata/influxdb/v2/kit/transport/http.SetCORS.func1({0x4077400, 0xc02551a100}, 0xc0505e6d00)
/home/circleci/go/src/github.com/influxdata/influxdb/kit/transport/http/middleware.go:36 +0x308
net/http.HandlerFunc.ServeHTTP(0xc0835cbdd0, {0x4077400, 0xc02551a100}, 0xc049876141)
/home/circleci/.tools/go/src/net/http/server.go:2046 +0x2f
github.com/influxdata/influxdb/v2/kit/transport/http.SkipOptions.func1({0x4077400, 0xc02551a100}, 0xc0505e6d00)
/home/circleci/go/src/github.com/influxdata/influxdb/kit/transport/http/middleware.go:81 +0xb9
net/http.HandlerFunc.ServeHTTP(0x33d8a90, {0x4077400, 0xc02551a100}, 0xc)
/home/circleci/.tools/go/src/net/http/server.go:2046 +0x2f
github.com/influxdata/influxdb/v2/http.(*PlatformHandler).ServeHTTP(0xc03f3fa040, {0x4077400, 0xc02551a100}, 0xc0505e6d00)
/home/circleci/go/src/github.com/influxdata/influxdb/http/platform_handler.go:81 +0x1d2
github.com/go-chi/chi.(*Mux).Mount.func1({0x4077400, 0xc02551a100}, 0xc0505e6d00)
/home/circleci/go/pkg/mod/github.com/go-chi/chi@v4.1.0+incompatible/mux.go:298 +0x13b
net/http.HandlerFunc.ServeHTTP(0x203009, {0x4077400, 0xc02551a100}, 0xc02551a0e0)
/home/circleci/.tools/go/src/net/http/server.go:2046 +0x2f
github.com/influxdata/influxdb/v2/kit/transport/http.Metrics.func1.1({0x407c1d0, 0xc00c8f8620}, 0xc0505e6d00)
/home/circleci/go/src/github.com/influxdata/influxdb/kit/transport/http/middleware.go:66 +0x1e2
net/http.HandlerFunc.ServeHTTP(0xc0044c1830, {0x407c1d0, 0xc00c8f8620}, 0x702dc5)
/home/circleci/.tools/go/src/net/http/server.go:2046 +0x2f
github.com/influxdata/influxdb/v2/kit/transport/http.Trace.func1.1({0x407c1d0, 0xc00c8f8620}, 0x1)
/home/circleci/go/src/github.com/influxdata/influxdb/kit/transport/http/middleware.go:106 +0x30c
net/http.HandlerFunc.ServeHTTP(0xc0388698c0, {0x407c1d0, 0xc00c8f8620}, 0xc050272c78)
/home/circleci/.tools/go/src/net/http/server.go:2046 +0x2f
github.com/go-chi/chi.(*ChainHandler).ServeHTTP(0x3c2d5a0, {0x407c1d0, 0xc00c8f8620}, 0xc01da74d25)
/home/circleci/go/pkg/mod/github.com/go-chi/chi@v4.1.0+incompatible/chain.go:31 +0x2c
github.com/go-chi/chi.(*Mux).routeHTTP(0xc0083f4cc0, {0x407c1d0, 0xc00c8f8620}, 0xc0505e6c00)
/home/circleci/go/pkg/mod/github.com/go-chi/chi@v4.1.0+incompatible/mux.go:431 +0x1f9
net/http.HandlerFunc.ServeHTTP(0x88, {0x407c1d0, 0xc00c8f8620}, 0x90)
/home/circleci/.tools/go/src/net/http/server.go:2046 +0x2f
github.com/influxdata/influxdb/v2/http.(*AddHeader).Middleware.func1({0x407c1d0, 0xc00c8f8620}, 0x53c4e01)
/home/circleci/go/src/github.com/influxdata/influxdb/http/handler.go:102 +0x77
net/http.HandlerFunc.ServeHTTP(0x40a6b18, {0x407c1d0, 0xc00c8f8620}, 0x53c4e90)
/home/circleci/.tools/go/src/net/http/server.go:2046 +0x2f
github.com/go-chi/chi.(*Mux).ServeHTTP(0xc0083f4cc0, {0x407c1d0, 0xc00c8f8620}, 0xc0505e6a00)
/home/circleci/go/pkg/mod/github.com/go-chi/chi@v4.1.0+incompatible/mux.go:86 +0x3c2
github.com/influxdata/influxdb/v2/http.(*Handler).ServeHTTP(0xc01da74d33, {0x407c1d0, 0xc00c8f8620}, 0x40)
/home/circleci/go/src/github.com/influxdata/influxdb/http/handler.go:166 +0x2f
net/http.serverHandler.ServeHTTP({0x4072558}, {0x407c1d0, 0xc00c8f8620}, 0xc0505e6a00)
/home/circleci/.tools/go/src/net/http/server.go:2878 +0x43b
net/http.(*conn).serve(0xc0006412c0, {0x40a6bc0, 0xc04f73a150})
/home/circleci/.tools/go/src/net/http/server.go:1929 +0xb08
created by net/http.(*Server).Serve
/home/circleci/.tools/go/src/net/http/server.go:3033 +0x4e8
"

通过查看源码大概的原因找到了,大概是因为找不到对应的分区。我是导入了 2021年整年的数据,再导入2022年7-8月份的数据后,又导入2022年1-6月份的数据时候,出现的这个问题。导致2022年1月3日到2月28日的数据都无法插入。

经过多次尝试,最终的解决方式是把新建bucket,数据按照顺序重新导入即可。如果数据量不大还好。可以通过下面的方式重新导入。开始时间是你所有数据的开始时间,结束时间是你有问题的时间的前一刻,比如我就是2022年1月3日00:00:00有问题 我就只导入这个时间之前的数据。

influx query 'from(bucket: "old-bucket") |> range(start: 1970-01-01T00:00:00Z, stop: 2022-01-02T23:59:59Z) |> to(bucket: "new-bucket", org: "org") > null

如果数据量太大了。就只能通过备份恢复的方式去搞了。

先备份原来的bucket,然后找到XXXXXXXXTXXXXXXZ.manifest文件,把里面shards为空的子项都删除了 搜索 "shards": [] 就可以搜索到位置,再执行下面的语句去恢复数据就好了。

influx restore --bucket example-bucket --new-bucket new-example-bucket /path/to/backup/dir/

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值