ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

etcd服务无法写入数据

2019-11-29 13:51:41  阅读:511  来源: 互联网

标签:1024 MB bytes ETCDCTL 写入 records etcd 无法 out


偶然听开发说服务发现是不是出故障了,查看日志发现Error: etcdserver: mvcc: database space exceeded,发现ETCD默认最大空间使用已经达到了2GB,临时将etcd库直接删除重启这种暴力方式解决了,但是没有解决根本问题,下次一定还会再出现,所以在本地测试一下增加空间和自动压缩。

先将etcd最大空间设置为16M启动

[root@localhost ~]#  etcd --quota-backend-bytes=$((16*1024*1024))

循环写入数据

[root@localhost ~]# while [ 1 ]; do dd if=/dev/urandom bs=1024 count=1024  | ETCDCTL_API=3 etcdctl put key  || break; done
1024+0 records in
1024+0 records out
1048576 bytes (1.0 MB) copied, 0.010793 s, 97.2 MB/s
OK
1024+0 records in
1024+0 records out
1048576 bytes (1.0 MB) copied, 0.0178137 s, 58.9 MB/s
OK
1024+0 records in
1024+0 records out
1048576 bytes (1.0 MB) copied, 0.0270086 s, 38.8 MB/s
OK
1024+0 records in
1024+0 records out
1048576 bytes (1.0 MB) copied, 0.0208378 s, 50.3 MB/s
OK
1024+0 records in
1024+0 records out
1048576 bytes (1.0 MB) copied, 0.0213647 s, 49.1 MB/s
OK
1024+0 records in
1024+0 records out
1048576 bytes (1.0 MB) copied, 0.0180274 s, 58.2 MB/s
OK
1024+0 records in
1024+0 records out
1048576 bytes (1.0 MB) copied, 0.017903 s, 58.6 MB/s
OK
1024+0 records in
1024+0 records out
1048576 bytes (1.0 MB) copied, 0.00862558 s, 122 MB/s
OK
1024+0 records in
1024+0 records out
1048576 bytes (1.0 MB) copied, 0.0276305 s, 37.9 MB/s
OK
1024+0 records in
1024+0 records out
1048576 bytes (1.0 MB) copied, 0.0169549 s, 61.8 MB/s
OK
1024+0 records in
1024+0 records out
1048576 bytes (1.0 MB) copied, 0.0390035 s, 26.9 MB/s
Error: etcdserver: mvcc: database space exceeded

发现上述空间已满,查看如下超出16MB限制

[root@localhost ~]# ETCDCTL_API=3 etcdctl --endpoints="http://192.168.32.134:2379" --write-out=table endpoint status
+----------------------------+------------------+---------+---------+-----------+-----------+------------+
|          ENDPOINT          |        ID        | VERSION | DB SIZE | IS LEADER | RAFT TERM | RAFT INDEX |
+----------------------------+------------------+---------+---------+-----------+-----------+------------+
| http://192.168.32.134:2379 | 8e9e05c52164694d |   3.3.8 |   19 MB |      true |         2 |         16 |
+----------------------------+------------------+---------+---------+-----------+-----------+------------+

我们再次尝试往里面写入数据,发现还是空间已满

[root@localhost ~]# ETCDCTL_API=3 etcdctl put newkey 123
Error: etcdserver: mvcc: database space exceeded

修改etcd.service文件增加每小时自动压缩和空间限额为8G

[root@localhost ~]# vim /etc/systemd/system/etcd.service
[Unit]
Description=Etcd
After=network.target
Before=flanneld.service

[Service]
User=root
ExecStart=/usr/local/bin/etcd \
-name etcd1 \
-data-dir /var/lib/etcd \
--advertise-client-urls http://192.168.32.134:2379,http://127.0.0.1:2379 \
--listen-client-urls http://192.168.32.134:2379,http://127.0.0.1:2379 \
--auto-compaction-retention=1 \     #开启每隔一个小时自动压缩
--quota-backend-bytes=8388608000    #磁盘空间调整为8GB
Restart=on-failure
Type=notify
LimitNOFILE=65536

[Install]
WantedBy=multi-user.target

重启服务

[root@localhost ~]# systemctl daemon-reload;systemctl restart etcd

ETCD相关操作命令:

#列出所有key
ETCDCTL_API=3 etcdctl get --prefix ""
#基于相同前缀查找
ETCDCTL_API=3 etcdctl get /test/ok --prefix
#添加key
ETCDCTL_API=3 etcdctl put /test/ok 11
#删除key
ETCDCTL_API=3 etcdctl del /test/ok
#删除所有/test前缀的节点
ETCDCTL_API=3 etcdctl del /test --prefix
#监听key
ETCDCTL_API=3 etcdctl wath /test/ok
#监听子节点
ETCDCTL_API=3 etcdctl /test/ok --prefix
#查看etcd集群成员状态
ETCDCTL_API=3 etcdctl --write-out=table --endpoints=localhost:2379 member list

标签:1024,MB,bytes,ETCDCTL,写入,records,etcd,无法,out
来源: https://www.cnblogs.com/will-space/p/11957308.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有