PostgreSQL 全球开发小组发布了我们数据库系统所有受支持版本的更新,包括 9.6.2、9.5.6、9.4.11、9.3.16 和 9.2.20。此版本包括修复程序,可防止索引构建和某些预写日志重放情况下的数据损坏问题,详情如下。它还修补了过去三个月报告的 75 多个其他错误。
用户应计划在下一次计划停机时应用此更新。
如果对以前未索引的列调用 CREATE INDEX CONCURRENTLY,则存在竞争条件,那么与 CREATE INDEX CONCURRENTLY 命令同时运行的事务更新的行可能已被错误地索引。
如果您怀疑可能发生这种情况,最可靠的解决方案是在安装此更新后重建受影响的索引。
此问题存在于 PostgreSQL 的 9.2、9.3、9.4、9.5 和 9.6 系列中。
此版本包含多项修复,可提高可见数据和 WAL 日志记录的稳定性,我们希望在此重点介绍。
在此版本之前,当用于目录扫描的特殊快照可用时,数据可能会被 vacuum 操作过早地修剪。具体来说,vacuum 操作将不知道此特殊快照的最旧 xmin。错误将显示一条消息,例如
"cache lookup failed for relation 1255"
此版本确保 vacuum 操作将考虑目录扫描快照。
此外,还有一些修复程序可以提高预写日志记录的稳定性,包括
这些问题存在于 PostgreSQL 9.6 系列版本中,并且也可能存在于 9.2、9.3、9.4 和 9.5 系列中。
此更新还修复了过去几个月报告的许多错误。其中一些问题仅影响 9.6 系列,但许多问题影响所有受支持的版本。此版本中提供了 75 多个修复程序,包括
将时区数据文件更新为 tzdata 版本 2016j,以适应北塞浦路斯(添加新时区 Asia/Famagusta)、俄罗斯(添加新时区 Europe/Saratov)、汤加和南极洲/凯西的 DST 法律变更。意大利、哈萨克斯坦、马耳他和巴勒斯坦的历史修正。切换为首选汤加的数字时区缩写。
所有 PostgreSQL 更新版本都是累积的。与其他次要版本一样,用户无需转储和重新加载数据库或使用 pg_upgrade 即可应用此更新版本;您可以简单地关闭 PostgreSQL 并更新其二进制文件。
如果您认为您已受到上述 CREATE INDEX CONCURRENTLY 错误的影响,则必须重建索引。以下是如何在不失去使用索引能力的情况下在生产系统中重建索引的示例
CREATE INDEX CONCURRENTLY new_index_name ON table_name (column_name);
DROP INDEX CONCURRENTLY old_index_name;
ALTER INDEX new_index_name RENAME TO old_index_name;
请注意,使用此方法意味着您将短暂地拥有同一索引的两个副本,因此如果磁盘空间是一个问题,您可能需要采取其他方法。
跳过一个或多个更新版本的用户可能需要运行额外的更新后步骤;有关详细信息,请参阅早期版本的发行说明。
链接