如何解决如何修复“需要冻结 xid 截止之前未提交的 xmin,表“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
)。
我需要有关如何修复它的帮助,或者如果我在这两个表上禁用 autovacuum 会受到什么影响。
注意:
- 数据库:PostgreSQL 11.6 版
- 操作系统:红帽企业 Linux 服务器 7.8 版
解决方法
您正在经历数据损坏,如果您不采取行动,您将走向灾难:如果 autovacuum 不断失败(正如它会发生的那样),您最终将足够接近事务 ID 环绕,您的数据库将停止接受交易。
创建一个新的数据库集群,用 pg_dumpall
转储损坏的集群,将其恢复到新集群并删除旧集群。
您运行的是旧的次要版本(当前是 11.10),因此您错过了大约一年的错误修复。原因可能是软件错误或(更常见的)硬件问题。
,正如 Laurenz 告诉您的那样,是数据损坏,但您不必转储并恢复。
如果您的行注册表不是那么重要,您可以通过 xmin 编号 53354897 将其删除。
为了更安全,您可以在此之前转储并在此之后删除,从而实现无停机时间。
就我而言,该错误发生在日志表中,我可以删除它而不会造成任何数据损坏。
观察:如果您的数据损坏,您也必须检查硬件和数据完整性,即使您删除了有问题的行。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。