如何修复 "uncommitted xmin from before xid cutoff needs to be frozen, automatic vacuum of table "db.pg_catalog.pg_largeobject"
How to fix "uncommitted xmin from before xid cutoff needs to be frozen, automatic vacuum of table "db.pg_catalog.pg_largeobject"
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
)。
我需要有关如何修复它或如果我在这 2 个表上禁用 autovacuum 会受到什么影响的帮助。
注:
- 数据库:PostgreSQL 版本 11.6
- OS:Red Hat Enterprise Linux 服务器版本 7.8
您正在经历数据损坏,如果您不采取行动,您将走向灾难:如果 autovacuum 不断失败(它将会失败),您最终将足够接近事务 ID 环绕,以至于您的数据库将停止接受交易。
创建一个新的数据库集群,使用 pg_dumpall
转储损坏的集群,将其恢复到新集群并删除旧集群。
您是 运行 一个旧的次要版本(当前是 11.10),因此您缺少大约一年的错误修复。原因可能是软件错误或(更常见的)硬件问题。
正如 Laurenz 告诉您的那样,是数据损坏,但您不必转储和恢复。
如果你的行注册表不是那么重要,可以通过xmin号53354897删除。
为了更安全,您可以在之前转储并在之后删除,从而实现无停机时间。
就我而言,该错误发生在日志中 table,我可以将其删除而不会造成任何数据损坏。
观察:如果数据损坏,即使删除有问题的行,也必须检查硬件和数据完整性。
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
)。
我需要有关如何修复它或如果我在这 2 个表上禁用 autovacuum 会受到什么影响的帮助。
注:
- 数据库:PostgreSQL 版本 11.6
- OS:Red Hat Enterprise Linux 服务器版本 7.8
您正在经历数据损坏,如果您不采取行动,您将走向灾难:如果 autovacuum 不断失败(它将会失败),您最终将足够接近事务 ID 环绕,以至于您的数据库将停止接受交易。
创建一个新的数据库集群,使用 pg_dumpall
转储损坏的集群,将其恢复到新集群并删除旧集群。
您是 运行 一个旧的次要版本(当前是 11.10),因此您缺少大约一年的错误修复。原因可能是软件错误或(更常见的)硬件问题。
正如 Laurenz 告诉您的那样,是数据损坏,但您不必转储和恢复。
如果你的行注册表不是那么重要,可以通过xmin号53354897删除。
为了更安全,您可以在之前转储并在之后删除,从而实现无停机时间。
就我而言,该错误发生在日志中 table,我可以将其删除而不会造成任何数据损坏。
观察:如果数据损坏,即使删除有问题的行,也必须检查硬件和数据完整性。