问题描述:
    变更无法生效,相关报错信息:etcd mvcc: database space exceeded。查询etcd节点状态,发现"NOSPACE"的告警信息,并且DB SIZE=2.1G

原因分析:
    etcd的官方文档常见问题(FAQ)版块针对这个场景有明确的说明,这个报错信息是etcd服务端返回的,用来提示应用etcd服务端空间不足了。etcd服务默认不会开启自动压缩参数,如果变更频繁,会导致空间和内存的浪费,最终将耗尽etcd的存储空间,Etcd v3 的默认的存储空间是2GB,如果不压缩,超过这个限制后,就会报错:”mvcc: database space exceeded”,导致数据无法写入。

问题解决:
    1.为了保证数据的安全,最好做一下数据的备份(非必须)
    ./etcdctl snapshot save backup.db --user=root --password="e63Sdv3xZ5JmTE"
    2.获取版本号revision
    ./etcdctl endpoint status --write-out="json" | egrep -o '"revision":[0-9]*' | egrep -o '[0-9].*'
    3.执行空间压缩
    export ETCDCTL_API=3
    ./etcdctl compact $revision
    4.整理碎片
    ./etcdctl defrag --user=root --password="e63Sdv3xZ5JmTE"
    5.清除告警信息(必须)
    etcdctl alarm disarm

以上操作需要在etcd集群中每一个节点都执行一遍。

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐