PostgreSQL 11.2、10.7、9.6.12、9.5.16 和 9.4.21发布!

2019-02-14,PostgreSQL全球开发小组发布了所有支持的数据库系统的版本更新,包括11.2、10.7、9.6.12、9.5.16 和 9.4.21版本。此次版本改变了PostgreSQL与系统函数fsync()的交互处理方式,修正了分区表的功能,以及用户近三个月所上报的超过70个Bug。

建议用户在下次的规划停机时,对系统进行升级。

重点提示: 对fsync()系统内核函数交互方式的改变

缺省配置下,如果操作系统有fsync()函数并且配置为可以使用的情况下,PostgreSQL会使用此函数来帮助确保数据写入磁盘。在一些提供fsync()函数的操作系统中,当系统在不能写入数据时,它会返回失败标志并且从它的数据缓冲区中清除应写入磁盘的数据。

在这种情况下,这个清除的操作对PostgreSQL有一个不好的副作用:如果PostgreSQL通过再次调用fsync()函数,试着再次写入数据,此时fsync()会报告写入成功,但PostgreSQL认为应存入磁盘的数据实际上并未写入磁盘。这样就会造成数据损坏的结果。

本次更新修改了PostgreSQL处理fsync()返回失败标识的方式:PostgreSQL将不再调用fsync()函数,而是发出PANIC级的报警。在这种情况下,PostgreSQL也可以从WAL日志中重新加载数据来帮助确保数据写入磁盘。 这种处理方式看起来不是最佳的解决方案,不过根据反馈报告,这个问题的发生也是极其少见的。

现在系统中增加一个新的服务器参数data_sync_retry来配置新的处理方式。如果用户确认操作系统在此种场景下不会清理脏数据,用户可以设置data_sync_retry为on来保持以前的处理方式。

BUG修正和改进

本次更新也引入了有关发布声明如何组织的变更。对本次更新,所有仍在支持的版本将仅含有当前大版本有关的发布内容。比如PostgreSQL 11的发布声明将仅包含11.2,11.1和11.0有关的内容。对不再支持的版本(如PostgreSQL 9.3及更早的版本)的发布声明,也会在即将上线的PostgreSQL网站归档文件中可以找到。

本次更新修正了近几个月所上报的Bug。部分Bug仅影响11版本,但大部分都对目前在支持的版本有影响。

这些修正包括:

修正分区表中包含INCLUDE选项的唯一索引中的问题;

确保分区表中NOT NULL的约束在其所属的分区中产生作用;

几处有关分区表约束的修正;

修正在对分区表或是继承表在应用ON COMMIT DROP 和ON COMMIT DELETE ROWS 操作时产生的问题;

禁止COPY FREEZE应用于分区表;

几处有关ALTER TABLE … ADD COLUMN 在带有非空的缺省值定义的修正,包括可能的索引出错;

几处有关GIN索引的修正,包括避免VACUUM和并发索引可能产生的死锁;

修正在使用表达式索引和断言的逻辑复制时可能产生的宕机问题;

几处有关WAL日志的修正;

修正在UPDATE中含有多个SET选项的子查询场景下可能造成的宕机现象;

修正当没有数据提交给json[b]_populate_recordset() 或是 json[b]_to_recordset() 函数时可能造成的宕机;

几处有关字符集处理的修正,包括在CALL调用时使用与字符集相关表达式的参数解析处理;

几处有关查询规划器的修正,包括对处理较大的继承表和分区表的规划速度的提升;

几处对TRUNCATE操作处理;

确保ALTER TABLE ONLY ADD COLUMN IF NOT EXISTS正确地处理;

允许对热备模式的UNLISTEN操作;

修正在pg_hba.conf参数文件中,对LDAP授权有关的按空格区隔主机名的列表解析处理;

几处对ecpg模块的修正;

几处对psql的修正,包括使用COPY TO STDOUT 时增加\g target 选项;

现在对pgbench指定–random-seed=N选项后,随机数的生成是平台独立并且结果是可确定的;

修正pg_basebackup 和 pg_verify_

checksums指令处理中的问题,来适当地忽略临时文件;

几处有关pg_dump的修正,包括对含ALTER INDEX SET STATISTICS指令的处理;

防止contrib/amcheck模块中,因在线数据压缩时可能造成的错误索引报警;

支持新的Makefile变量来帮助编译扩展模块;

本次更新也包含2018i版本的时区数据,包括哈萨克斯坦、梅特拉卡特拉、圣多美和普林西比时区的更新。哈萨克斯坦的克孜勒奥尔达区现分为两部分,因此系统中也增加了一个新区Asia/Qostanay,加上对中国香港和一些太平洋岛屿历史数据的更新。

系统更新

所有PostgreSQL的更新版本是累进方式的。对一般小版本的更新,并不需要用户对数据进行导出和导入或是使用pg_upgrade进行更新,只需要停止PostgreSQL服务,更新一下服务器的二进制文件即可。

用户跳过了一个或是多个补丁版本可能也需要额外的后续操作,请浏览详细的发布说明来检查更早版本升级的细节。

PostgreSQL 9.4版本将会在2020年2月13号以后不再进行更新,请浏览以下的版本策略了解更多信息。

  大连专业包皮医院 http://bp.bohaink.com/

  大连哪家医院做包皮手术好 http://bp.lnbohaink.com/

  大连男科医院哪家好 http://xzmobile.84211111.com/

猜你喜欢

转载自blog.csdn.net/qq_42894764/article/details/88970130