当前位置: 首页 > news >正文

数据库因坏块导致无法VACUUM FREEZE问题处理

文章目录

  • 环境
  • 症状
  • 问题原因
  • 解决方案

环境

系统平台:N/A
版本:4.5.8,4.5.7,4.5.6,6.0

症状

数据库因事务年龄达到21亿,导致事务冻结,无法进行增删改。 数据库日志中提示:

<2025-05-13 13:55:41.693 CST app:[未知] db:db_1 pid:2869609 state:54000 tran:0 sessiontime:2025-05-13 13:55:21 CST>语句: INSERT INTO table xxx values xxx <2025-05-13 13:55:41.693 CST app:[未知] db:db_1 pid:2869611 state:54000 tran:0 sessiontime:2025-05-13 13:55:21 CST>错误: 数据库没有接收命令来避免在数据库"db_1"中的重叠数据损失 <2025-05-13 13:55:41.693 CST app:[未知] db:db_1 pid:2869611 state:54000 tran:0 sessiontime:2025-05-13 13:55:21 CST>提示: 停止postmaster进程,然后在单用户模式下清理数据库. 您也可能需要提交或回滚旧的已准备好事务,或者旧的复制槽. 。。。 <2025-05-13 13:57:26.035 CST app: db: pid:2870085 state:XX001 tran:0 sessiontime:2025-05-13 13:55:23 CST>错误: 无法读取文件"base/16387/220001"的块0:只读取了8192字节的0 <2025-05-13 13:57:26.035 CST app: db: pid:2870085 state:XX001 tran:0 sessiontime:2025-05-13 13:55:23 CST>上下文: 对表"db_1.public.table_namexxx"进行自动清理

问题原因

数据文件所在的磁盘或文件系统可能出现物理损坏或存储错误,导致块损坏,数据库无法对相关表进行事务年龄回收。

解决方案

  1. 检查坏块对应的数据库对象
    以数据库文件base/16387/220001 为例:
select*frompg_databasewhereoid='16387';

数据库名称为db_1,则切换到db_1查询对应对象名称、类型等信息。

selectoid,relname,relnamespace,relkindfrompg_classwhererelfilenode=220001;
  1. 坏块对象处理

2.1 假如对象为索引:
寻找合适时间,删除和重建索引。

2.2 假如对象为表
寻找合适时间,配置zero_damaged_pages=on,使用pg_dump导出数据,重新建表后导入。 注意:修改该参数前,强烈进行数据库的完整物理备份。

altersystemsetzero_damaged_pages=on;selectpg_reload_conf();

关于zero_damaged_pages参数介绍,请参考:

059921204 PostgreSQL坏块忽略参数的介绍
假如坏块较多,则建议重建实例后,进行全库导入,注意排查硬盘和文件系统是否存在IO错误。

  1. 再次进行事务ID回收

完成表重建或索引重建后,需要手动进入单用户模式,执行

VACUUM FREEZE;

单用户模式,请参考:

瀚高技术支持平台:012067504 瀚高数据库的单用户模式介绍 postgres --single

http://www.jsqmd.com/news/533809/

相关文章:

  • SpringBoot毕设答辩问题实战解析:从项目架构到高频问答的完整应对策略
  • OpenClaw技能扩展实战:用QwQ-32B搭建个人知识管理助手
  • AI智能客服实战入门:从零搭建高可用对话系统
  • LFM2.5-GGUF轻量模型实战:用supervisor管理Web服务与日志分析
  • 4个核心步骤实现企业级GB28181视频平台部署
  • 2026年重卡充电站投资指南:三大主流站点模式,动力电池生产/光伏电站巡检/高低压配电柜安装,重卡充电站品牌口碑推荐 - 品牌推荐师
  • 不止于搭建:用Vulhub靶场复现CVE漏洞,快速提升你的实战渗透技能
  • Wan2.2-I2V-A14B版权安全实践:训练数据隔离+生成内容水印嵌入方案
  • OG 488 DBCO,俄勒冈绿488 二苯并环辛炔,实现对含叠氮基生物分子的特异性标记
  • 收藏!小白程序员必看:轻松入门AI Agent、Skills和MCP,开启大模型学习之旅
  • 结构化数据输出:AI读脸术返回JSON格式结果,便于二次开发集成
  • 【OpenClaw 全面解析:从零到精通】第 024 篇:OpenClaw 可观测性实战:Clawmetry、Opik、OpenTelemetry 方案全解析
  • 2026甘肃路灯/庭院灯/景观灯/太阳能路灯厂家甄选 适配多工程需求 - 深度智识库
  • 2026实测5款新媒体矩阵管理工具,AI全流程合规检测,破解矩阵运营难题!
  • AI英语单词APP的开发
  • VR-Reversal:3D视频转2D播放的视角动态适配解决方案
  • Win11系统优化
  • 3步终结信息焦虑:Folo重新定义内容消费
  • FakeLocation技术解析与实战指南:3大核心优势破解虚拟定位难题
  • 2024最新版QQNT防撤回插件技术指南:保护您的消息不被删除
  • 239. 滑动窗口最大值【结构体+优先队列写法】
  • 2026仿石砖推荐参考:聚焦西南地区工程适配的厂家盘点 - 速递信息
  • Llama-3.2V-11B-cot企业落地:广告素材合规性(版权/敏感/误导)三重审查
  • ChatGPT 入口技术解析:从 API 集成到生产环境最佳实践
  • DataHub GraphQL API终极指南:30分钟掌握现代数据栈的元数据查询神器
  • 1801181-54-3,Oregon Green Alkyne,在长时间光照下抗淬灭能力远优于传统荧光素
  • 5分钟搞定PaddleX目标检测:从标注到训练的全流程保姆级教程
  • Lychee-Rerank-MM实战教程:调整max_length=3200提升长文档重排序精度
  • Spring Boot 环境变量配置详解:从 IDEA 到 Docker 部署
  • 正则表达式七:位置匹配