关于sql:RDS-PostgreSQL一键大版本升级技术解密

41次阅读

共计 3631 个字符,预计需要花费 10 分钟才能阅读完成。

简介:内容简要:一、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 一键大版本升级在产品化、用户体验、可验证可回滚能力上引领行业

版权申明:本文内容由阿里云实名注册用户自发奉献,版权归原作者所有,阿里云开发者社区不领有其著作权,亦不承当相应法律责任。具体规定请查看《阿里云开发者社区用户服务协定》和《阿里云开发者社区知识产权爱护指引》。如果您发现本社区中有涉嫌剽窃的内容,填写侵权投诉表单进行举报,一经查实,本社区将立即删除涉嫌侵权内容。

正文完
 0