kuboard etcdserver: mvcc: database space exceeded
2024-08-19Failed to create authorization request: etcdserver: mvcc: database space exceeded
1、当etcd达到默认2GB存储限制时,会出现错误'etcdserver: mvcc: database space exceeded'。解决方法包括获取当前版本,压缩历史记录,清理碎片,解除警告,并在启动参数中启用自动压缩功能,如--auto-compaction-retention=1h --auto-compaction-mode=‘periodic’。参考etcd官方维护指南进行操作。
2、ls -l /data/kuboard-data/etcd-data/member/snap/db 2G
3、docker exec -it ad4f57c8ee6b bash
docker restart ad4f57c8ee6b
4、ETCDCTL_API=3 etcdctl --endpoints="http://127.0.0.1:2379" --write-out=table endpoint status
5、操作步骤:
cat << EOF > a.sh
# 备份db
etcdctl snapshot save backup.db
# 查看当前版本
rev=$(ETCDCTL_API=3 etcdctl --endpoints=http://127.0.0.1:2379 endpoint status --write-out="json" | egrep -o '"revision":[0-9]*' | egrep -o '[0-9].*')
# 压缩旧版本
ETCDCTL_API=3 etcdctl --endpoints=http://127.0.0.1:2379 compact $rev
# 整理多余的空间
ETCDCTL_API=3 etcdctl --endpoints=http://127.0.0.1:2379 defrag
# 取消告警信息(之前有nospace的告警)
ETCDCTL_API=3 etcdctl --endpoints=http://127.0.0.1:2379 alarm disarm
# 再次查看etcd的状态(发现ERROR字段已为空)
ETCDCTL_API=3 etcdctl --endpoints="http://127.0.0.1:2379" --write-out=table endpoint status
EOF
cat << EOF > b.sh
etcdctl snapshot save backup.db
rev=$(ETCDCTL_API=3 etcdctl --endpoints=http://127.0.0.1:2379 endpoint status --write-out="json" | egrep -o '"revision":[0-9]*' | egrep -o '[0-9].*')
ETCDCTL_API=3 etcdctl --endpoints=http://127.0.0.1:2379 compact $rev
ETCDCTL_API=3 etcdctl --endpoints=http://127.0.0.1:2379 defrag
ETCDCTL_API=3 etcdctl --endpoints=http://127.0.0.1:2379 alarm disarm
ETCDCTL_API=3 etcdctl --endpoints="http://127.0.0.1:2379" --write-out=table endpoint status
EOF
sh b.sh
6、ls -l /data/kuboard-data/etcd-data/member/snap/db
-rw------- 1 root root 245760 Aug 19 12:48 db
7、找到etcd镜像的github地址,通过手动构建镜像时修改DockerFile文件中的启动命令
# 表示每隔一个小时自动压缩一次
--auto-compaction-retention=1
# 磁盘空间调整为 8G,官方建议最大 8G(单位是字节)
--quota-backend-bytes=8388608000
8、删除/data/kuboard-data,重新安装Kuboard
分类:Linux | 标签: |