pg_dump 严重:段太大

pg_dump FATAL: segment too big

pg_dump 失败并显示错误消息: "pg_dump FATAL: segment too big"

这是什么意思?

Ubuntu16.04.

上的 PostgreSQL 10.4

似乎 pg_dump 将从它 运行 的查询中收到的错误消息传递到日志中。

日志中的以下行(如果您的日志很忙,可能会隐藏得更深)显示失败的查询。

在这种情况下,我们有一个损坏的序列。对序列的任何查询,无论是交互式的,通过列默认值还是通过 pgdump,都会返回 "segment too big" 错误,并终止查询进程。

我找出了序列的新起始值,删除了依赖项,并从旧序列停止的地方开始创建了一个新序列,然后将依赖项放回原处。

pg_dump 之后工作正常。

目前尚不清楚为什么或如何序列会如此损坏,以至于在访问它时会出现会话终止错误。我们最近确实遇到了一次数据库硬崩溃,所以它可能是相关的。 (尽管该序列很少被访问,而且我们不太可能在递增它的过程中崩溃。)