0

PostgreSQL 数据库错误日志整天生成这个错误并且仍然继续错误到第二天

[23523] ERROR:  uncommitted xmin 53354897 from before xid cutoff 210760077 needs to be frozen
[23523] CONTEXT:  automatic vacuum of table "xxxx.pg_catalog.pg_largeobject"
[23523] ERROR:  uncommitted xmin 53354897 from before xid cutoff 210760077 needs to be frozen
[23523] CONTEXT:  automatic vacuum of table "xxxx.pg_catalog.pg_largeobject_metadata"

错误涉及系统目录 ( pg_catalog.pg_largeobject, pg_catalog.pg_largeobject_metadata)。

我需要有关如何修复它的帮助,或者如果我在这两个表上禁用 autovacuum 会受到什么影响。

笔记:

  • 数据库:PostgreSQL 版本 11.6
  • 操作系统:Red Hat Enterprise Linux Server 7.8 版
4

2 回答 2

0

你正在经历数据损坏,如果你不采取行动,你将走向灾难:如果 autovacuum 一直失败(因为它会失败),你最终将足够接近事务 ID 环绕,以至于你的数据库将停止接受事务。

创建一个新的数据库集群,用 转储损坏的集群pg_dumpall,将其恢复到新集群并删除旧集群。

您正在运行旧的次要版本(当前是 11.10),因此您缺少大约一年的错误修复。原因可能是软件错误或(更常见的)硬件问题。

于 2021-02-04T15:10:43.247 回答
0

正如 Laurenz 告诉您的,是数据损坏,但您不必转储和恢复。

如果您的行注册表不是那么重要,您可以通过 xmin 编号 53354897 将其删除。

为了获得更高的安全性,您可以在此之前转储并在之后删除,从而实现无停机时间。

就我而言,该错误发生在日志表中,我可以将其删除而不会造成任何数据伤害。

观察:如果您的数据损坏,即使您删除了有问题的行,您也必须检查您的硬件和数据完整性。

于 2021-08-11T18:25:34.700 回答