暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

ETCD发起的请求中仍然包含了这些已被压缩的数据,因此就会导致请求执行失败并返回该错误信息。

原创 是赐赐啊! 2023-05-26
310

问题报错:
May 26 09:42:29 SX-IPSMGW01-OMC-DB01 etcd: failed to apply request "header:<ID:7232921378046736335 auth_revision:1 > compaction:<revision:795665 physical:true > " with response "" took (8.421µs) to execute, err is mvcc: required revision has been compacted
报错内容解释:
在进行数据压缩时,发现有一些数据因为过时而被压缩了,但是客户端发起的请求中仍然包含了这些已被压缩的数据,因此就会导致请求执行失败并返回该错误信息。

启动脚本
etcd --name etcd1 --initial-advertise-peer-urls http://etcd1.sme:2380 --listen-peer-urls http://0.0.0.0:2380 --listen-client-urls https://0.0.0.0:2379 --advertise-client-urls https://etcd1.sme:2379 --cert-file=./tls/etcd1.crt --key-file=./tls/etcd1.key --client-cert-auth --trusted-ca-file=./tls/rootCA.pem --cipher-suites TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 --auto-compaction-retention 1 --initial-cluster-token sme --initial-cluster etcd1=http://etcd1.sme:2380,etcd2=http://etcd2.sme:2380,etcd3=http://etcd3.sme:2380 --initial-cluster-state new

数据压缩是一项重要的优化措施,可以显著提高系统的性能。
--auto-compaction-retention 是 etcd 中的一个启动参数,用于指定预期保留的键值对历史版本数目。当 etcd 存储的键值对版本历史达到此预期保留的数目时,etcd 会自动进行一次版本历史的压缩,以减少磁盘空间的占用。
具体而言,--auto-compaction-retention 参数控制 etcd 的自动压缩行为。当该参数设为 0时,表示禁用自动压缩机制;当设为一个正整数值时,表示在即将达到这个指定版本数时,会进行一次版本历史的压缩。注意,这个参数不会导致 etcd 立即自动进行压缩,而是在某个键值对的版本历史达到此预期保留的数目时,才会触发版本历史的压缩。
通常建议根据服务器磁盘容量的大小,结合自身业务场景,谨慎地设置该参数的值,以避免出现 ETCD 磁盘空间不足,无法写入数据的情况。同时,也应该定期对 etcd 进行备份,以便在数据丢失和恢复的时候使用。

auto-compaction-mode 是 etcd 中一个配置参数,用于指定 etcd 应该如何自动压缩过时的 key 值对历史版本。
auto-compaction-mode 参数有下列取值:
revision,表示使用历史版本数作为触发自动压缩的依据;
period,表示使用时间间隔作为触发自动压缩的依据;
revision+period,表示同时使用版本数和时间间隔两个因素作为触发自动压缩的依据。
当使用 revision 选项时,可以设置 auto-compaction-retention 参数来指定要保留的历史版本数。例如,auto-compaction-retention=10000 表示 etcd 会自动压缩已经过时的历史版本,使得保留的历史版本数不超过 10000 个。

当使用 period 选项时,可以设置 auto-compaction-retention 参数来指定存储 key 值对历史版本的最大时间。例如,auto-compaction-retention=24h 表示 etcd 会自动压缩已经过时的历史版本,使得存储的历史版本时间不超过 24 小时。

当同时使用 revision+period 选项时,auto-compaction-retention 参数需要同时设置历史版本数和历史版本时间两个限制条件。例如,auto-compaction-retention=10000:24h 表示 etcd 会自动压缩已经过时的历史版本,使得保留的历史版本数不超过 10000 个,且存储的历史版本时间不超过 24 小时。

注意,当 auto-compaction-mode 参数被设置为 revision 或 revision+period 时,会存在某些历史版本永远不会被删除的风险(比如存储的版本数一直低于设定的阈值),从而导致 etcd 存储空间的无限增长。因此,在设置这些参数时需要格外注意。



结论需要添加参数:

auto-compaction-retention: '1000'

auto-compaction-mode: revision

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论