pg_dump失败,错误消息为:
“pg_dump FATAL:段太大”
那是什么意思?
Ubuntu 16.04上的PostgreSQL 10.4。
最佳答案
pg_dump似乎将它从正在运行的查询接收到的错误消息传递到日志中。
日志中的以下行(如果有繁忙的日志,可能会隐藏得更深)显示了失败的查询。
在这种情况下,我们有一个损坏的序列。对序列的任何查询,无论是交互式的、通过列默认的还是通过pgdump,都返回“segment too big”错误,并终止查询过程。
我计算出了序列的新开始值,删除了依赖项,并创建了一个新序列,从旧序列停止的地方开始,然后将依赖项放回去。
在那之后,pg_dump工作得很好。
目前尚不清楚序列为何或如何会损坏到访问时会出现会话终止错误。不过,我们最近确实遇到数据库硬崩溃,所以可能与此有关。(尽管这个序列很少被访问,而且我们不太可能在递增的过程中下降。)