PostgreSQL: PostgreSQL 14 out-of-cycle release coming June 16, 2022
https://www.postgresql.org/about/news/postgresql-14-out-of-cycle-release-coming-june-16-2022-2466/#:~:text=The PostgreSQL Global Development Group,to silent corruption of indexes.
原文中给出了原因和解决的方案,但是解决方案是在是不怎么样,所以强烈建议大家不要在新上的数据库上使用 PG 14.1 - 14.3版本 ,14.4 会修补这个问题。
这里主要的问题部分是在建立索引时如果你使用 currently 的方式建立索引则会导致索引建立错误,这不光发生在reindex ,同时发生在create index 等操作中.
这个BUG 的发现起源于 2022-05-18日 10:42分的一个bug 报告,提出在重建主键的时候发生问题
这个BUG 中描述通过pgbench来对数据库进行压测后,建立索引时报错,他们针对这个问题进行了检测,对整体的索引扫描,发现在索引中丢失了数据。
随即POSTGRESQL 开发组对这个问题进行调查,调查的结果是在PG14的版本中可以复现问题,在其他的版本中没有复现问题。他们将在下一个版本PG14.4 修复这个问题。问题的检测是通过 amcheck 来进行的。通过这个 amcheck 函数 bt_index_check 来判断索引是否工作正常。
如果你目前已经使用了PG 14 版本请不要在建立索引或者REINDEX 时使用 concurrently 命令来建立索引,你可以通过 reindexdb的命令并且通过 --job 的方式来添加并行性来暂时解决问题。
最后请等待PG14.4的released ,在去使用PG14版本的数据库。