写点什么

关于 PD etcd 空间使用满处理记录

  • 2025-03-07
    北京
  • 本文字数:1091 字

    阅读完需:约 4 分钟

作者: WalterWj 原文来源:https://tidb.net/blog/5519a997

背景

周末接到社区伙伴的电话,说 pd 拉不起来了。报错 Error: etcdserver: mvcc: database space exceeded


找到相关 FAQ:https://docs.pingcap.com/zh/tidb/stable/ticdc-faq

处理方式

因为当时 PD 拉不起来报错,因此进行 etcd 碎片整理处理,操作如下:


  1. 设置环境变量 ETCDCTL_API 的值为 3,表示使用 etcdctl v3 AP


export ETCDCTL_API=3


  1. 停止 PD 服务,需要登录对应服务器


systemctl stop pd-2379


因为 TiDB 集群每个节点都是有自己的守护进程,如果启动命令有执行过,虽然没有启动成功,但守护进程会不断尝试启动。为了避免干扰,推荐手动关闭守护进程。


这一步可以一次性关闭:


tiup cluster stop cluster_name -y


  1. 对 etcd 的数据目录进行碎片整理(defragmentation)


etcdctl defrag --data-dir /data2/tiup/tidb-data/pd-2379


A. 这里 etcdctl 工具可以从 tiup 服务器获取,scp 到 pd 服务器上使用。tiup 一般在管理用户家目录下,路径一般为:


find .tiup -name etcdctl.tiup/components/ctl/v6.1.3/etcdctl
复制代码


B. 路径使用 pd data 目录即可,获取方式:


tiup cluster display cluster_name


结果中找到 pd 对应 Data Dir 列的路径即可。


  1. db 文件的所有者和组设置为 tidb


chown tidb.tidb db


  • db 文件是 etcd 存储数据的核心文件,位于 data-dir/member/snap 目录下。

  • 如果文件权限不正确,可能导致 etcd 无法正常启动或运行。


如果 3 的操作不是使用 tidb 用户,但是 pd 启动用户是 tidb,那么会有权限问题。整理完成后,会看到 db 文件会从 8GB+ 大小降下来。


  1. 启动 pd


systemctl start pd-2379


  1. 查询 etcd 端点的状态,并以表格形式输出


etcdctl endpoint status --write-out=table


确定可以正常访问


  1. 列出当前 etcd 集群中的所有告警


  • etcd 在检测到异常情况(如节点失联、存储空间不足等)时会触发告警。


尽管我们已经进行了空间压缩,但 etcd 空间不足的告警可能仍然存在,这会导致 PD 无法启动.


  1. 解除 etcd 集群中的所有告警


ETCDCTL_API=3 etcdctl alarm disarm


  • 在解决告警问题后,需要手动解除告警,否则告警会持续存在。


可以观察 pd 应该可以正常启动。或者重启一下 pd

问题原因

  1. PD etcd 在新版本,存储空间配置为 8GB,这个不推荐调整过大。

  2. TiDB cdc 在低版本会将 metaData ,包括表的状态信息,调度信息,都是存在 etcd 里面。另外如果执行了比较多的 ddl ,会导致这些信息短时间内增长较大。etcd 在没有及时整理的情况下,就有可能空间使用超过 8GB。

  3. 这个问题在 5.4 有相关优化代码,但是在 6.0 版本后才默认打开相关优化代码。


推荐使用 cdc 的话,tidb 集群在 v6.5+。


其他更低版本推荐使用 tidb binlog。


发布于: 刚刚阅读数: 5
用户头像

TiDB 社区官网:https://tidb.net/ 2021-12-15 加入

TiDB 社区干货传送门是由 TiDB 社区中布道师组委会自发组织的 TiDB 社区优质内容对外宣布的栏目,旨在加深 TiDBer 之间的交流和学习。一起构建有爱、互助、共创共建的 TiDB 社区 https://tidb.net/

评论

发布
暂无评论
关于 PD etcd 空间使用满处理记录_版本升级_TiDB 社区干货传送门_InfoQ写作社区