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日志记录的稳定性,我们这里强调一下。
在此版本之前,当用于目录扫描的特殊快照当前可用时,数据可能会被真空操作过早删除。具体来说,真空操作不会知道这个特殊快照的最早的xmin。错误将与一个消息,如:
"cache lookup failed for relation 1255"
此版本确保vacuum操作将考虑目录扫描快照。
此外,有几个修复程序来提高预写日志的稳定性,包括:
* BRIN索引WAL日志记录的修复,其中重放可能使BRIN索引的一部分无用并需要重新计算 * 修复重置未记录表的问,其中将在`wal_level = minimal`设置下创建WAL日志,并且在崩溃后重放时,该表将不会被正确重置 * 修复WAL页头验证,在重新读取段时,在恢复期间会报告“out-of-sequenceTLI” 错误段
这些问题存在于9.6系列的PostgreSQL版本中,也可能存在于9.2,9.3,9.4和9.5系列中。
此更新还修复了在过去几个月中报告的一些错误。其中一些问题只影响9.6系列,但许多影响所有支持的版本。在此版本中提供了超过75个修订,包括:
更新时区数据文件到tzdata发布2016j为北Cyprus(增加一个新的区域Asia/Famagusta),俄罗斯(增加一个新的区域Europe/Saratov),Tonga和Antarctica/Casey的DST历史变化。意大利,哈萨克斯坦,马耳他和巴勒斯坦的历史修正。切换到喜欢 Tonga 的数字区缩写。
所有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;
请注意,使用此方法意味着你将短暂拥有相同索引的两个副本,因此,如果磁盘空间是一个问题,你可能需要采取其他方法。
如果用户做大版本更新,或者跳过一个或多个更新版本,可能需要运行其他更新后步骤; 有关详细信息,请参阅早期版本的发行说明。
链接: