etcd数据库:mvcc database space exceeded错误
问题
今晚突然出现kuboard
无法访问错误,通过查看日志,出现大量以下错误:
{"level":"warn","ts":"2024-12-02T20:19:38.958+0800","caller":"clientv3/retry_interceptor.go:61","msg":"retrying of unary invoker failed","target":"endpoint://client-cb668178-4c91-4741-aacb-826006fc2308/127.0.0.1:2379","attempt":0,"error":"rpc error: code = ResourceExhausted desc = etcdserver: mvcc: database space exceeded"}
time="2024-12-02T12:19:38Z" level=error msg="Storage health check failed: create auth request: etcdserver: mvcc: database space exceeded"
通过此错误判断了下是是etcd的空间满了,因为kuboard
默认也是使用ETCD数据,的是2g,kuboard开发者没对ETCD存储空间做调整,那么应该就是超过了2G,而我也没做定时清理kuboard
审计日志,就导致此问题出现的。
该错误表明您的 etcd 数据库已经达到存储空间限制(
etcdserver: mvcc: database space exceeded
)。这通常是由于 etcd 数据库存储容量已满或写入操作导致的。
解决
# 1.获取当前的版本
ETCDCTL_API=3 etcdctl --endpoints=127.0.0.1:2379 endpoint status --write-out="json" | egrep -o '"revision":[0-9]*' | egrep -o '[0-9].*'
# 2压缩当前版本之前的所有记录
# etcdctl --endpoints=<ENDPOINT> compact <revision>
ETCDCTL_API=3 etcdctl --endpoints=127.0.0.1:2379 compact 6078532
# 3、清理多余的碎片空间
ETCDCTL_API=3 etcdctl --endpoints=127.0.0.1:2379 defrag
# 4.解除警告
ETCDCTL_API=3 etcdctl --endpoints=127.0.0.1:2379 alarm disarm
增加 etcd 数据配额
默认情况下,etcd 的存储限制为 2GB。如果你需要存储更多数据,可以增大存储限制(仅适用于 etcd v3.4+):
etcd --quota-backend-bytes=<BYTES>
例如,将配额增加到 8GB:
etcd --quota-backend-bytes=$((8*1024*1024*1024))
注意:更改此值前,需要检查系统的磁盘空间是否足够。
参考
1.https://etcd.io/docs/v3.4/op-guide/maintenance/#history-compaction