Josef Machytka:PostgreSQL 18默认启用数据校验和

Josef Machytka:PostgreSQL 18默认启用数据校验和

💡 原文英文,约1900词,阅读约需7分钟。
📝

内容提要

PostgreSQL 18默认启用数据校验和,以便早期检测数据损坏。通过计算页面内容和地址,校验和能发现内存和存储中的错误,从而提高数据安全性,尽管会带来少量性能开销。

🎯

关键要点

  • PostgreSQL 18默认启用数据校验和,以便早期检测数据损坏。
  • 数据损坏可能在PostgreSQL数据库中静默存在,直到读取损坏数据时才会被发现。
  • 数据校验和通过计算页面内容和地址来发现内存和存储中的错误,提高数据安全性。
  • PostgreSQL表或索引以8 KB页面存储,校验和存储在页面头部。
  • 在每次读取时,PostgreSQL会重新计算校验和并与存储值进行比较。
  • PostgreSQL 18的发布说明中明确列出了启用数据校验和的变化。
  • DBA在升级时必须匹配校验和设置,确保源和目标集群的校验和状态一致。
  • pg_stat_database中有两个列用于监控校验和失败的统计信息。
  • pg_checksums工具用于检查、启用或禁用校验和,必须在服务器关闭时运行。
  • 在升级前,用户可以选择在新集群上禁用校验和或在旧集群上启用校验和。
  • 当检测到校验和不匹配时,PostgreSQL会发出警告并引发错误。
  • ignore_checksum_failure和zero_damaged_pages是两个开发者选项,用于数据恢复。
  • autovacuum进程会强制禁用zero_damaged_pages,以防止自动零化数据。
  • 启用数据校验和可以更早地检测到数据损坏,减少潜在问题。
  • PostgreSQL 18的决定反映了性能影响微小而好处巨大的经验。

延伸问答

PostgreSQL 18中数据校验和的默认设置是什么?

PostgreSQL 18默认启用数据校验和,以便早期检测数据损坏。

数据校验和如何提高PostgreSQL的安全性?

数据校验和通过计算页面内容和地址来发现内存和存储中的错误,从而提高数据安全性。

如何在PostgreSQL中监控校验和失败?

可以通过pg_stat_database中的checksum_failures和checksum_last_failure列来监控校验和失败的统计信息。

在升级PostgreSQL集群时需要注意什么?

在升级时,源和目标集群的校验和设置必须一致,确保两者都启用或禁用校验和。

pg_checksums工具的主要功能是什么?

pg_checksums工具用于检查、启用或禁用校验和,必须在服务器关闭时运行。

PostgreSQL如何处理校验和不匹配的情况?

当检测到校验和不匹配时,PostgreSQL会发出警告并引发错误,DBA可以使用ignore_checksum_failure和zero_damaged_pages选项进行数据恢复。

➡️

继续阅读