【DB吐槽大会】第59期 - PG 缺少便捷的坏块修复能力

简介: 大家好,这里是DB吐槽大会,第59期 - PG 缺少便捷的坏块修复能力

背景


1、产品的问题点

  • PG 缺少便捷的坏块修复能力

2、问题点背后涉及的技术原理

  • PG 的数据通过block组织, block可以开启checksum用于校验其正确性. 如果BLOCK出现了问题checksum可能和实际计算得到的checksum对不上, 或者完全无法读出该block.
  • 遇到这样的问题, 需要通过备份进行恢复.

3、这个问题将影响哪些行业以及业务场景

  • 通用

4、会导致什么问题?

  • 通过备份进行恢复代价非常大. 如果只是少量block出现问题, 显然代价很高.

5、业务上应该如何避免这个坑

  • 目前只能通过备份恢复, 包括逻辑备份, 物理备份.

6、业务上避免这个坑牺牲了什么, 会引入什么新的问题

  • 一旦涉及到备份恢复, 就要考虑2个问题
  • 能不能恢复到最新的状态
  • 需要多久完成恢复, 越大的实例, 可能需要花费越多时间.
  • 虽然可以使用ZFS这种快照文件系统, 建立实时从库来解决恢复速度的问题. 但是物理坏块是可能传染的, 问题有可能传染到从库.
  • 要有完整的备份, 导致成本增加
  • 备份和恢复都需要资源来存储, 导致成本增加

7、数据库未来产品迭代如何修复这个坑

  • 希望内核层面支持通过WAL日志(有full page write时)来修复坏块, 效率大幅度提升, 而且没有通过PITR全量恢复耗时、耗资源的问题.
相关文章
|
8月前
|
人工智能 运维 安全
GPT-5.2 Codex来了:能独立跑7+小时的AI程序员,老金手把手教你玩转
OpenAI发布GPT-5.2 Codex,支持异步自主编程,7小时持续任务不断线。采用上下文压缩技术,胜任复杂重构与安全审计。对比Claude Code的同步交互,Codex更像远程员工,适合甩手任务。Plus用户可免费体验,API性价比高,配合本地工具高效开发。
GPT-5.2 Codex来了:能独立跑7+小时的AI程序员,老金手把手教你玩转
|
机器学习/深度学习 数据可视化 网络架构
YOLOv11改进策略【SPPF】| NeuralPS-2022 Focal Modulation : 使用焦点调制模块优化空间金字塔池化SPPF
YOLOv11改进策略【SPPF】| NeuralPS-2022 Focal Modulation : 使用焦点调制模块优化空间金字塔池化SPPF
361 13
YOLOv11改进策略【SPPF】| NeuralPS-2022 Focal Modulation : 使用焦点调制模块优化空间金字塔池化SPPF
|
人工智能 数据处理 语音技术
Pipecat实战:5步快速构建语音与AI整合项目,创建你的第一个多模态语音 AI 助手
Pipecat 是一个开源的 Python 框架,专注于构建语音和多模态对话代理,支持与多种 AI 服务集成,提供实时处理能力,适用于语音助手、企业服务等场景。
1759 23
Pipecat实战:5步快速构建语音与AI整合项目,创建你的第一个多模态语音 AI 助手
|
SQL 监控 关系型数据库
PostgreSQL普通表转换成分区表
如何使用pg_rewrite扩展将普遍表转换成分区表
|
存储 运维 监控
硬盘检测工具哪个好?
本文评测了五款硬盘检测工具,包括HD Tune Pro(专业全面,适合专家,付费)、CrystalDiskInfo(免费,适合初学者,界面简洁)、DiskGenius(功能强大,免费版有限,适合多任务)、AIDA64 Extreme(详尽硬件信息,性能测试,付费)和HDDScan(免费开源,功能多,界面复杂)。这些工具能检查硬盘健康、SMART信息、坏道、性能等,帮助用户预防数据丢失。根据需求和熟练程度选择合适的工具,定期检测,保障数据安全。
硬盘检测工具哪个好?
|
存储 SQL BI
深入解析实时数仓Doris:介绍、架构剖析、应用场景与数据划分细节
深入解析实时数仓Doris:介绍、架构剖析、应用场景与数据划分细节
|
SQL 关系型数据库 数据库
|
SQL 存储 关系型数据库
pg_rewind实现原理简单分析
pg_rewind的功能是在主备切换后回退旧主库上多余的事务变更,以便可以作为新主的备机和新主建立复制关系。本文简单介绍其实现原理。
2558 145
|
关系型数据库 测试技术 数据库
`pg_rewind` 是 PostgreSQL 数据库的一个工具,用于将一个数据库集群回退到指定的时间点
pg_rewind 是 PostgreSQL 数据库的一个工具,用于将一个数据库集群回退到指定的时间点。这对于恢复数据或解决某些问题非常有用。 简单来说,如果你有一个 PostgreSQL 数据库集群并且你知道在某个时间点它是健康的,但之后出现了问题,你可以使用 pg_rewind 来将数据库回退到那个时间点,从而恢复到已知的、健康的、一致的状态。 使用 pg_rewind 的基本步骤如下: 确定基准时间:首先,你需要确定一个基准时间点,知道在该时间点上数据库是健康的。 备份当前数据库:在执行 pg_rewind 之前,确保你已经备份了当前的数据库。 执行 pg_rewind:使用
778 1