大家好,又见面了,我是全栈君。
##### 翻译:亭亭小次郎@飞象
PostgreSQL全球开发组在2016-10-27日 发布了PostgreSQL数据库系统中所有支持版本的更新, 包括9.6.1,9.5.5,9.4.10,9.3.15,9.2.19和9.1.24。 这也是PostgreSQL 9.1系列的最后一次更新, 因为它现在结束维护生命周期。 此版本修复了两个可能导致数据损坏的问题,下 面将对此进行更详细的介绍。
它还补丁了过去三个月中报告的一些其他错误。 该项目敦促用户在下次可能的停机时间应用此更新。
截断关系的WAL日志记录
在此版本之前,存在一个可能遇到的问题, PostgreSQL实例将尝试访问不再存在于磁盘上的数据。 如果可用空间映射未更新以了解截断, 则 PostgreSQL 数据库可能返回已被截断的页面, 并产生如下错误:
ERROR: could not read block 28991 in file "base/16390/572026": read only 0 of 8192 bytes
如果启用校验和,则还会出现可见性映射中的校验和故障。
这个问题存在于 PostgreSQL 的9.3,9.4,9.5和9.6系列的版本中。
pg_upgrade在大端机器上的问题
在大端机器(例如许多非Intel CPU架构)上,pg\_upgrade
不正确地写入可见性映射的字节, 导致 pg\_upgrade
无法完成。
如果你使用的是big-endian机器(许多非Intel架构都是big-endian) 并且使用pg_upgrade从9.6之前的版本升级, 你应该假定所有的可见性映射都不正确,需要重新生成。 使用 contrib/pg_visibility
的 pg_truncate_visibility_map()
函数截断每个关系的可见性映射就行了。 请阅读更新部分, 查阅文章末尾提到的安装说明, 可以了解相关在PostgreSQL实例上解决此问题的方法。
这个问题只存在于PostgreSQL 9.6.0版本中。
Bug修复和相关改进
除了上述,此更新还修复了在过去几个月中报告的一些错误。 其中一些问题只影响9.6系列,但许多问题影响所有社区支持的版本。 此版本更新超过了50个修订,包括:
- 修复使用 DISTINCT 执行聚合函数时的后用后危险,这可能导致崩溃
- 修复了用作窗口函数的多态聚合的不正确处理,这可能导致崩溃
- 修复在big-endian机器上不正确创建GIN索引的WAL记录
- 修复在截断大于1GB的临时表时, 文件描述符泄漏
- 修复拥有PRIMARY KEY或REPLICA IDENTITY索引的表, 批量UPDATE时,查询内存泄漏
- 修复SELECT FOR UPDATE/SHARE, 以正确锁定由后续中止的事务更新的元组
- 使用已启用行级安全性的表中的列名列表修复COPY
- 修复删除推测性插入的TOAST元组时退出 INSERT … ON CONFLICT
- 修复VACUUM等待排它表锁定时的超时长度,以便它可以截断表
- 在创建或更改表时修复合并中的错误继承的CHECK约束
- 修复jsonb_set()中数组元素的替换的bug
- 修复在btree索引中中止使用缩写键时可能出现的排序错误
- 在Windows上,在访问被拒绝错误后,重试创建动态共享内存控制段
- 修复 pgbench 的平均延迟计算
- 使pg_receivexlog 使用参数 –synchronous无插槽时正确执行
- 使pg_rewind在源服务器上的会话中关闭synchronous_commit
- 不要尝试在libpq中的多个连接之间共享SSL上下文
- 支持OpenSSL 1.1.0
- 添加了TAP测试基础组件,使其可用于扩展模块的测试
- 逻辑WAL解码和复制槽的几个修复
- 在pg_dump,pg_xlogdump和pg_upgrade中存在的几个小问题的修复
- 对查询计划器和EXPLAIN输出中的小问题的几个修复
- 时区支持的几个修复
此更新还包含tzdata版本2016h为巴勒斯坦和土耳其的DST法律变化, 加上土耳其和俄罗斯一些地区的历史修正。 在南极洲,前苏联,斯里兰卡,切换到某些时区的数字缩写的问题。
IANA时区数据库中,以前为所有时区提供了缩写文本, 即使当地人口中几乎没有或没有货币的缩写。 他们正在改变这一策略, 倾向于在没有实际使用英语缩写的证据的区域中使用数字UTC偏移。 至少暂时,PostgreSQL将继续接受这样删除的缩写的时间戳输入。 但它们不会显示在pg_timezone_names视图中,也不用于输出。
在此更新中,AMT不再显示为正在使用中的亚美尼亚时间。 因此,我们更改了默认缩写集以将其解释为Amazon Time, 因此使用UTC-4
而不是 UTC+4
。
9.1版本维护终结,以及注意事项
PostgreSQL版本9.1现在是End-of-Life(EOL)。
此版本的社区不会发布其他内容的更新或安全修补程序。 但仍然要求9.1的用户尽快升级。 相关详细信息, 请参阅我们的 版本控制策略。
##更新
所有PostgreSQL更新版本都是累积的。 与其他次要版本一样,用户不需要转储和重新加载其数据库, 或使用pg_upgrade应用此更新版本; 你可以简单地关闭PostgreSQL数据库,并更新其二进制文件实现更新。
如果你的系统受到大端系统pg_upgrade错误的影响, 请阅读可见性映射问题, 并按照说明,解决你的PostgreSQL实例上的这个问题。
跳过一个或多个更新版本的用户可能需要运行其他更新后步骤; 有关详细信息,请参阅早期版本的发行说明。
转载于:https://my.oschina.net/innovation/blog/777059
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/108818.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...