本地Kubernetes集群中PostgreSQL数据自动丢失问题排查求助
PostgreSQL数据丢失排查(Pod/PVC/PV未重启场景)
检查PostgreSQL数据挂载与配置
- 确认Pod内PostgreSQL数据目录是否正确绑定PVC:执行
kubectl exec <postgresql-pod-name> -- ls -l /var/lib/postgresql/data,查看是否存在base、pg_hba.conf等核心数据文件 - 验证PostgreSQL配置中的数据目录路径:执行
kubectl exec <postgresql-pod-name> -- cat /var/lib/postgresql/data/postgresql.conf | grep data_directory,确保路径指向PVC挂载点
- 确认Pod内PostgreSQL数据目录是否正确绑定PVC:执行
核查PV对应存储介质状态
- 通过
kubectl describe pv <pv-name>获取宿主机上的实际存储路径(如Docker卷路径/var/lib/docker/volumes/xxx/_data) - 直接在宿主机查看该路径下的文件,确认数据文件是否存在或完整;同时检查宿主机磁盘是否有空间不足、挂载异常等问题
- 通过
分析PostgreSQL运行日志
- 提取Pod日志排查异常:执行
kubectl logs <postgresql-pod-name>,若Pod有过静默重启(未触发重建),可追加--previous查看历史日志 - 重点关注
database system was not properly shut down、could not open file、invalid page这类错误,这类信息通常指向数据损坏或丢失的直接原因
- 提取Pod日志排查异常:执行
验证存储类回收策略
- 查看对应StorageClass配置:
kubectl get storageclass <sc-name> -o yaml - 确认
reclaimPolicy为Retain,排除异常回收逻辑导致的数据丢失(虽PV未重启,但需确认是否存在隐性触发条件)
- 查看对应StorageClass配置:
排查Docker Desktop本地集群状态
- 若使用Docker Desktop搭建K8s,确认重启PC后Docker卷是否正常加载:重启Docker Desktop后,重新检查PV对应的宿主机存储目录内容,排除卷挂载异常导致Pod使用空临时存储的情况
内容的提问来源于stack exchange,提问作者Manel
相关产品推荐
相关产品推荐

