etcdserver: mvcc: database space exceeded

错误提示

message: etcdserver: mvcc: database space exceeded

问题排查

step-1 检查主机是否安装etcd操作工具(etcdctl)
```shell
$ etcdctl --h
# 未安装,接下来安装工具,版本自行去github找, 3.x以上即可,下面仅为示例版本
$ wget https://github.com/etcd-io/etcd/releases/download/v3.3.23/etcd-v3.3.23-linux-amd64.tar.gz 
$ tar -xzf etcd-v3.3.23-linux-amd64.tar.gz 
$ cd etcd-v3.3.23-linux-amd64
$ cp etcdctl /usr/local/bin/etcdctl
```

step-2 检查主机/集群的状态
```shell
# 设置变量, use API-3
$ export ETCDCTL_API=3
# 查询etcd部署情况
$ etcdctl member list 
# 连接主机
$ ssh [master-ip/host-ip]
# 检查当前主机状态
$ etcdctl endpoint status
  127.0.0.1:2379, c48c8c6f0e1493a5, 3.2.5, 2.2 GB, true, 19920, 460159113 # 官方默认2G,超限报错,问题就在于此
```

step-3 着手解决
```shell
# 查看警告信息
$ etcdctl --endpoints=http://127.0.0.1:2379 alarm list
  memberID:8630161756594109333 alarm:NOSPACE
# 获取当前版本
$ rev=$(etcdctl --endpoints=http://127.0.0.1:2379 endpoint status --write-out="json" | egrep -o '"revision":[0-9]*' | egrep -o '[0-9].*')
# 压缩旧版本
$ etcdctl --endpoints=http://127.0.0.1:2379 compact $rev 
# 清理磁盘碎片
$ etcdctl --endpoints=http://127.0.0.1:2379 defrag
# 最后验证空间是否释放
$ etcdctl endpoint status # 惊人 G变成了M
# 最后清除警告
$ etcdctl --endpoints=http://127.0.0.1:2379 alarm disarm

```

**So funny!**

你可能感兴趣的:(FAQ,devops)