简介:内容简要:一、PostgreSQL行业地位;二、PostgreSQL版本升级背景;三、PostgreSQL版本升级解密;四、PostgreSQL版本升级成绩

一、PostgreSQL行业地位

(一)行业地位

在探讨PostgreSQL(上面简称为PG)在整个数据库行业的地位之前,咱们先看一下阿里云数据库在寰球的数据库行业里的地位。

• 魔力象限领导者

*Gartner 2020,阿里云数据库挺进
寰球数据库魔力象限领导者

• PG年度最佳产品奖


*2020 PG亚洲大会上,阿里云数据库专属集群MyBase荣膺“PG年度最佳产品奖”

接下来,咱们看一下PG数据库在行业中的地位。

• 寰球数据库排行


*PostgreSQL间断3年取得的最佳数据库在开源数据库排名TOP2地位,寰球风行度趋势排名TOP4

• 广泛应用


*PG数据库宽泛使用于各行各业,蕴含:计算机软件、信息技术及服务、
医疗及衰弱、金融服务、高等教育、通信服务等畛域

(二)RDS PG VS 自建PG

在大抵理解PG在行业的地位后,接下来再看看阿里云RDS PG和自建PG相比有哪些方面的长处。


*如上图所示,绝对于自建PG,RDS PG的劣势次要体现在
可靠性、安全性、智能化和丰盛插件四个方面

1.可靠性

RDS PG提供了Logical Slot Failover能力,在主备模式下,当实例产生HA切换当前,Logical Slot能够持续为用户提供数据同步,这解决了自建PG在HA切换时无奈做到数据增量同步的问题。

RDS PG的Standby反对多上游结点,当HA切换当前,仍然能够放弃只读实例读写拆散性能, 不影响只读节点的数据同步。

一键大版本升级使得咱们的用户能够产品化地一键降级到更高版本的PG,享受PG更新版本的个性与稳定性。

2.安全性

安全性次要分为三个方面。

首先,RDS PG提供云盘加密性能,用户只须要提供一个Key,RDS PG就能够应用这个用户自定义的Key对数据进行落盘加密。

其次,咱们公布了SSL自定义证书性能,提供客户端以及服务端的自定义证书,提供客户端和服务端防假装,晋升数据库安全性。

最初,RDS PG提供SGX全加密,这个性能是基于硬件的加密技术,使数据在全链路上进行加密。

3.智能化

阿里云RDS的整个产品系列都提供了DAS服务。帮忙用户在应用数据库的过程提供诊断优化能力,DAS能够帮忙用户自发现、自诊断、自优化、自决策地解决用户数据库的问题。

4.丰盛插件

RDS PG的Ganos时空引擎插件提供了时空数据的存储、检索、查问以及剖析能力。

第二个插件是PASE高效向量检索插件。

第三个插件是oss_fdw,实现数据冷热拆散的场景,将冷数据存储在更为高价的OSS上,在RDS PG上能够对OSS上的数据进行查问剖析。

通过以上能够发现,相较自建PG,RDS PG在可靠性、安全性、智能化、插件丰盛度方面劣势显著。

二、PostgreSQL版本升级背景

PostgreSQL的降级性能源于用户应用中遇到的一些问题,在降级中咱们也面临许多挑战。

1.遇到的问题

• 老版本:过期不保护

过低的数据库版本,稳定性挑战, 比方:

1)PG 9.4,版本过老2)低版本,供应链问题3)社区不保护,无人兜底

• 高版本:新个性

用户对于高版本、新个性的强力需要, 比方:

1)增量排序2)并行索引垃圾回收3)索引deduplicate能力4)分区表、聚合性能晋升

2.面临的挑战

• 弹性能力:极致弹性

PG 9.4和PG 10.0本地盘版本是跑在物理机状态上的,导致弹性能力绝对较弱,比方:

1)秒级快照2)弹性伸缩能力3)更大存储空间反对4)备份操作无性能损耗

• 平滑割接: 利用感知小

在一键大版本升级过程中,如何使得用户利用尽可能的感知小,平滑的割接是另外一个微小的挑战, 比方:

1)保障插件兼容性

2)割接、非割接模式3)可回滚、可验证能力4)利用零改变、感知小5)一键大版本升级产品化能力

总结而言,咱们冀望RDS PG可能产品化一键大版本升级、平滑割接、提供可验证、可回滚能力。

三、PostgreSQL版本升级解密

(一)设计准则

基于以上对产品的思考,咱们在设计RDS PG的过程中次要遵循以下四大准则。

1.验证回滚:可验证、可回滚-版本回滚:大版本回滚-DNS地址:连贯字符串回滚-可验证: 高版本可验证能力

2.限度要少:场景全笼罩-DDL限度-表结构限制-数据类型限度-版本全系笼罩

3.一键降级:一键降级产品化-回绝降级手册-一键产品化能力-插件兼容性适配

4.平滑割接:利用不停服零宕机-降级过程利用不停服-降级过程速度快-连贯地址平滑割接
这四大设计准则的出发点在于,咱们心愿将简单留给本人,把简略留给用户,为用户带去极致的产品应用体验。

(二)计划抉择

基于上方的设计准则,咱们就要对降级计划进行抉择。对于PG大版本升级,行业内次要有如下存在三种计划。

计划一:逻辑复制

• 长处:

兼容性好、平滑割接

• 毛病:

1)库级别的公布、订阅

2)表必须有PK / UK3)不反对DDL、大对象4)外键和触发器禁用5)可能导致到WAL日志沉积

计划二:pg_upgrade

• 长处:

1)不拷贝数据, 仅元数据降级

2)效率高, 2TB数据,降级 < 10s

• 毛病:

1)降级预查看

2)回滚验证策略3)参数、插件兼容性4)复杂度高、工作量大、挑战大

计划三:pg_dump

• 长处:

1)兼容性好

2)实现简略、工作量小

• 毛病:

1)仅实用全量迁徙

2)效率低下3)利用停服工夫长

RDS PG最终抉择限度少、兼容性好、效率高、平滑割接的pg_upgrade计划。

(三)降级预查看

用户降级之前须要先对实例进行降级预查看,查看流程能够让用户晓得实例是否能够降级,降级会存在什么问题,而后用户再依据谬误的信息做相应的批改或适配,使得降级能够顺利完成。降级预查看流程如下:


*降级预查看流程图

首先,用户到前端控制台,依据源端实例的版本抉择指标实例的版本,而后提交降级预查看流程,咱们的后盾会创立一个降级检查报告。接着初始化用户抉择的高版本数据目录,而后生成高版本参数模板。

而后执行pg_upgrade--check,最终上传检查报告到管制台上,用户在RDS控制台就能够查看报告,如下是一个典型的降级预检查报告。


*降级预查看后果

能够看到,报告包含十分多的查看项,是否能够降级后果高深莫测,帮忙用户降级前屏蔽降级危险。

(四)正式降级

降级预查看实现且无误后,就进入了正式降级流程,流程图如下所示。

如上图所示,流程图的每个步骤都蕴含两个角色,别离是用户降级前的源实例和降级后的指标实例。

降级之前,用户通过DNS连贯到源实例。当用户在控制台发动一个大版本升级当前,咱们会在后盾帮用户创立一个和源实例同版本的指标实例的master节点,并且搭建复制链路。期待复制链路搭建好了,所有的数据同步结束当前,待用户的切换工夫。工夫点到了当前,咱们就会对源实例做Readonly。

第4步是把源实例和指标实例进行断连,断连后把指标实例晋升为主库。

第5步是进行pg_upgrade操作,做元数据的降级,所以效率十分高,而后把用户的DNS地址切到指标实例上,此时用户利用就能够进行读和写。

第6步重搭备库,利用秒级快照能力,能够疾速搭建备库,最终将整个实例平滑降级到高版本。

整个降级流程有以下几个要害的中央:

• 利用不停服

1)不停服:用户利用全程可读

2)平滑性: 第5步,通过连贯地址替换来实现,用户利用无需批改代码

• 可验证可回滚

1)可验证: 非割接模式,源实例零干涉

2)可回滚: 第5步之前,零代价回滚,连贯地址随时可回滚

• 效率高
1)速度快: 第5步pg_upgrade2T数据在10秒内能够降级结束

2)重搭快: 秒级快照,10分钟左右重搭备库,与数据量大小无关

• 用户影响

1)第 3-5 步,仅分钟级RO工夫

总结:利用不停服,零宕机,仅分钟级的RO。

(五)利用不停服零宕机

降级的过程做到利用不停服零宕机,次要是通过以下四点实现。

1.克隆指标实例指标实例采纳类克隆实例计划,源端实例始终可用。

2.可验证、可回滚非割接模式提供验证能力,连贯地址切换之前,均可回滚。

3.DNS地址切换切换用户连贯DNS地址到指标实例上,防止利用改变。

4.pg_upgrade元数据降级pg_upgrade仅元数据降级,耗时与数据量大小无关,实测2TB数据,少于10秒。

通过以上四点,最终一键平滑地实现大版本升级。

四、PostgreSQL版本升级成绩

(一)成绩展现


*阿里云RDS PG大版本升级在覆盖面、可用性、效率、可验证可回滚能力方面获得显著成绩。

(二)行业比照


*阿里云RDS PG一键大版本升级在产品化、用户体验、可验证可回滚能力上引领行业

原文链接
本文为阿里云原创内容,未经容许不得转载。