迁移到PostgreSQL 13版本PostgreSQL 13 Beta测试阶段中有丰富的功能集。这是一个很好的学习努力参与测试的世界上最好的数据库之一。不管有多少开发、编码和管理经验你对PostgreSQL版本的测试;你可以参与审查文档,验证特性,以及一些小任务。完整的测试指南也可以wiki页面。

很快,PostgreSQL 13 GA将是可用的,人需要PostgreSQL的新特性将想要迁移到版本。这是一个主要版本,所以它需要一些努力升级。

转储/恢复(pg_dump)

最安全、最古老的方法之一升级是一个转储和恢复。当我们说安全,这意味着数据库分手后几乎没有恢复到新版本,但它有自己的局限性,因为它需要大量的时间和额外的空间备份。PostgreSQL的工具pg_dump和pg_restore,完整的文档可以在PostgreSQL官方文档站点。

pg_upgrade

PostgreSQL的就地升级工具。它有能力PostgreSQL主要版本升级,无需额外的空间和需要少得多的时间升级相比转储/恢复。

下面是观察到的不兼容性列表:

1 -类似于…逃避零和substring(文本模式脱离文本)返回NULL。

以防id逃脱NULL,应用程序将NULL代替任何价值。之前返回true,如果逃避指定NULL。但在PostgreSQL 13,它返回的空是正确的行为,但你需要修改应用程序在这种情况下如果期望如此。

PostgreSQL版本< 13

PostgreSQL版本13

2。jsonb_to_tsvector()正确检查“字符串”参数。

固定一个bug JSON函数”jsonb_to_tsvector”,以防错误的参数。以前是匹配的只有五个字,而不是六个,这是错误的,产生的结果,而不是抛出错误。如果应用程序有问题,而不是一个结果,你会得到一个错误,你需要修复,在您的应用程序。

PostgreSQL版本< 13

PostgreSQL版本13

3 -在ltree使用相邻的星号和括号时,例如“。* {2}。*{3}”,它正确地解释为“* {5}”。

这个期待已久的bug修复lquery照顾的连续行为与括号‘*’项。下面的例子将产生真正的在这两种情况下,但它产生虚假的* {2}。*{3}',这是错误的。

PostgreSQL版本< 13

PostgreSQL版本13

4 -有一个非默认effective_io_concurrency的变化。的旧值需要计算新值。按照这个公式计算新值从旧的值:

选择圆(sum(老/ n::浮动))从generate_series(旧)(n);

设置返回的值effective_io_concurrency上面的select语句。

5 -防止pg_stat_ssl pg_stat_gssapi系统显示辅助流程的观点。

PostgreSQL版本< 13

PostgreSQL版本13

6 -解决pageinspect bt_metap()返回更合适的数据类型,不太可能溢出。

函数“bt_metap”不会给一个错误的整数溢出。在我看来,它不会打破迁移,因为它是一个bug修复。

SELECT * FROM bt_metap \ gx(“指数”)
错误:“2180413846”值范围的整数类型

7 -重命名一些recovery-related等事件。

一些recovery-related等事件已经改变,你需要更换事件。

RecoveryWalAll - > RecoveryWalStream

RecoveryWalStream - > RecoveryRetrieveRetryInterval。

8 -修复改变外国表…重命名列标签返回一个更合适的命令。以前它返回ALTER TABLE但现在返回改变外国表。

PostgreSQL版本< 13

PostgreSQL版本13

9 -修复改变物化视图…回到一个更合适的命令重命名列标签。

PostgreSQL版本< 13

PostgreSQL版本13

以下支持被移除:

1 -删除支持定义操作符类使用pre-PostgreSQL 8.0语法。

2 -删除支持定义外键约束使用pre-PostgreSQL 7.3语法

3 -删除支持“不透明”pseudo-types pre-PostgreSQL 7.3所使用的服务器


我们的白皮书”为什么选择PostgreSQL ?”看着PostgreSQL的特点和优点,提出了一些实际的用法示例。我们还研究如何对企业有用PostgreSQL从Oracle迁移。

下载

订阅
通知的
客人

0评论
内联反馈
查看所有评论