Postgresql‘无效页眉’恢复

Postgresql‘无效页眉’恢复

我目前正在使用一个使用 Postgresql 进行数据存储的嵌入式系统。我们目前遇到一个问题,即这些机器有时会在没有任何警告的情况下重新启动,并且无法正常关闭。这显然在某些情况下会给我们带来数据库问题(某些高流量表中的无效页眉是最常见的症状)。

我想知道的是,清除错误的最简单方法是什么?我显然会丢失数据,但由于错误通常发生在包含短暂数据的表中,所以我并不关心,我只想让系统恢复运行。

目前我们的程序是删除并重新创建所有受影响的表。我们还能做些什么来加快速度?正如我所说,我可以接受受影响页面上的任何数据丢失,我只想让系统正常运行。

平台是 Ubuntu 7.04、Postgresql 8.2(我们现在无法强制客户升级)。文件系统是 ext3,位于 2 GB CF 卡上。

显然,修复意外重启是我的首要任务,但进展缓慢(在实验室中很难重现)。与此同时,我希望找到一个更简单的解决方案,让我们的现场人员能够更快地处理出现的问题。

答案1

您是否尝试过设置WAL 同步方法fsync_writethrough

答案2

只是想跟进创可贴,以防有人需要它:

您可以启用零损坏页面并在受影响的表上运行 VACCUUM,这应该会清除任何包含已知缺陷数据的页面。但这无法保护您免受列值的无声损坏,因为截至目前,PostgreSQL 尚未对其数据进行块/页面级校验。

所以这是最后的选择,解决问题的根源总是更好的;)。

相关内容