RDS PostgreSQL一键大版本升级技术解密

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

一、PostgreSQL行业位置

(一)行业位置

在讨论PostgreSQL(下面简称为PG)在整个数据库行业的位置之前,我们先看一下阿里云数据库在全球的数据库行业里的位置。

  • 魔力象限领导者

1-1.1.PNG

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

  • PG年度最佳产品奖

image.png

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

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

  • 全球数据库排行
    image.png

*PostgreSQL连续3年获得的最佳数据库在开源数据库排名TOP2位置,全球流行度趋势排名TOP4

  • 广泛应用

image.png

*PG数据库广泛运用于各行各业,包含:计算机软件、信息技术及服务、

医疗及健康、金融服务、高等教育、通讯服务等领域

(二)RDS PG VS 自建PG

在大致了解PG在行业的位置后,接下来再看看阿里云RDS PG和自建PG相比有哪些方面的优点。

image.png

*如上图所示,相对于自建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的升级功能源于用户使用中遇到的一些问题,在升级中我们也面临许多挑战。

image.png

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的过程中主要遵循以下四大原则。

image.png

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

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

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

4.平滑割接:应用不停服零宕机-升级过程应用不停服-升级过程速度快-连接地址平滑割接

这四大设计原则的出发点在于,我们希望将复杂留给自己,把简单留给用户,为用户带去极致的产品使用体验。

(二)方案选择

基于上方的设计原则,我们就要对升级方案进行选择。对于PG大版本升级,行业内主要有如下存在三种方案

image.png

方案一:逻辑复制

  • 优点:

兼容性好、平滑割接

  • 缺点:

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方案。

(三)升级预检查

用户升级之前需要先对实例进行升级预检查,检查流程可以让用户知道实例是否可以升级,升级会存在什么问题,然后用户再根据错误的信息做相应的修改或适配,使得升级可以顺利完成。升级预检查流程如下:

image.png

*升级预检查流程图

首先,用户到前端控制台,根据源端实例的版本选择目标实例的版本,然后提交升级预检查流程,我们的后台会创建一个升级检查报告。接着初始化用户选择的高版本数据目录,然后生成高版本参数模板。

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

image.png

*升级预检查结果

可以看到,报告包括非常多的检查项,是否可以升级结果一目了然,帮助用户升级前屏蔽升级风险。

(四)正式升级

升级预检查完成且无误后,就进入了正式升级流程,流程图如下所示。

image.png

如上图所示,流程图的每个步骤都包含两个角色,分别是用户升级前的源实例和升级后的目标实例。

升级之前,用户通过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。

(五)应用不停服零宕机

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

image.png

1.克隆目标实例目标实例采用类克隆实例方案,源端实例一直可用。

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

3.DNS地址切换切换用户连接DNS地址到目标实例上,避免应用改动。

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

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

四、PostgreSQL版本升级成果

(一)成果展示

image.png

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

(二)行业对比

image.png

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/512956.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

环境变量_Jenkins流水线环境变量权威指南

你是否遇到过因环境变量问题导致调试流水线很长时间&#xff1f;这篇文章一定能解决你的问题。本文章翻译自博客。欢迎来到“Jenkins CookBook”系列的第一篇博客文章。今天&#xff0c;我们专注于有效地使用Jenkins Pipeline环境变量。您将学习如何定义env变量&#xff0c;如何…

浅谈RSocket与响应式编程

简介&#xff1a; RSocket是高效一个二进制的网络通讯协议&#xff0c;能够满足很多场景下使用。另外&#xff0c;RSocket也是一个激进的响应式捍卫者&#xff0c;激进到连API都跟响应式无缝集成。本文我们将和大家分享RSocket与响应式编程。 作者 | 素渡 来源 | 阿里技术公众号…

Go语言重新开始,Go Modules 的前世今生与基本使用

随着Go语言发展与场景变化&#xff0c; GOPATH 引起的编译依赖、内部自签发证书、安全审计等问题相继出现&#xff0c;随着官方推出的Go Modules逐渐完善&#xff0c;用户有了新的选择。本文将会带领大家从0开始&#xff0c;认识并使用Go Modules。 2020 年腾讯内部的一份开发者…

MaxCompute中如何通过logview诊断慢作业

简介&#xff1a; MaxCompute致力于批量结构化数据的存储和计算&#xff0c;提供海量数据仓库的解决方案及分析建模服务&#xff0c;在MaxCompute执行sql任务的时候有时候作业会很慢&#xff0c;本文通过查看logview排查具体任务慢的原因 在这里把任务跑的慢的问题划分为以下几…

excel超级工具箱_这6个Excel高效办公插件,你都用过吗?

1.易用宝。ExcelHome出品&#xff0c;永久免费&#xff0c;让繁琐或难以实现的操作变得简单可行&#xff0c;甚至能够一键完成&#xff0c;所有这些功能都将极大地提升 Excel 的便捷以及可用性&#xff01;地址&#xff1a;http://yyb.excelhome.net2.方方格子工具箱。大部分功…

Yurt-Tunnel 详解|如何解决 K8s 在云边协同下的运维监控挑战

简介&#xff1a; 伴随着 5G、IoT 等技术的快速发展&#xff0c;边缘计算被越来越广泛地应用于电信、媒体、运输、物流、农业、零售等行业和场景中&#xff0c;成为解决这些领域数据传输效率的关键方式。与此同时&#xff0c;边缘计算形态、规模、复杂度的日益增长&#xff0c;…

RTC风向标:11月最值得关注的26个热点

近年来&#xff0c;实时音视频快速发展&#xff0c;WebRTC作为实时音视频的标准也快速发展&#xff0c;从直播到通讯&#xff0c;其应用场景也在不断丰富。如果您关注实时音视频方向的技术产品应用与创新&#xff0c;本系列文章就将会为您分享音视频方向的技术产品动态&#xf…

克隆需要验证_[实验技巧]CRISPR实验中如何验证编辑?

在CRISPR/Cas9基因组编辑实验中&#xff0c;如果你已经构建好了gRNA表达载体&#xff0c;并利用Cas9将它引入了目标细胞&#xff0c;那么恭喜你&#xff01;成功就在眼前&#xff0c;指日可待。下一步&#xff0c;你还要验证一下&#xff0c;看看细胞的编辑是否如你所愿。在此&…

基于边缘云的机器流量管理技术实战

简介&#xff1a; CDN是通过在全球范围内分布式地部署边缘服务器将各类互联网内容缓存到靠近用户的边缘服务器上&#xff0c;从而降低用户访问时延并大幅减少穿越互联网核心网的流量。互联网业务使用CDN已经成为一种必然的选择。 企业边缘应用面临的挑战 CDN是通过在全球范围…

python中的repr是什么意思_python中str和repr有什么区别

python中str和repr有什么区别&#xff1f;下面给大家详细介绍&#xff1a; 1、内建函数str()和repr() 或反引号操作符&#xff08;&#xff09;可以方便地以字符串的方式获取对象的内容、类型、数值属性等信息。 2、str()函数得到的字符串可读性好&#xff08;故被print调用&am…

Go语言入门分享

简介&#xff1a; Go语言出自Ken Thompson、Rob Pike和Robert Griesemer之手&#xff0c;起源于2007年&#xff0c;并在2009年正式对外发布。Go的主要目标是“兼具Python等动态语言的开发速度和C/C等编译型语言的性能与安全性”&#xff0c;旨在不损失应用程序性能的情况下降低…

瑞欧威尔联合创始人兼CEO 李波博士:“工业元宇宙”是为了更好赋能实体经济

2021年12月10日&#xff0c;由广东省游戏产业协会、广东省虚拟现实产业技术创新联盟、深圳市科学技术协会、深圳市互联网文化市场协会指导&#xff0c;陀螺科技主办&#xff0c;深圳市科技开发交流中心、恒悦创客魔方协办&#xff0c;行业头部媒体游戏陀螺、VR陀螺、陀螺电竞、…

加载模型图_Tensorflow ckpt模型加载时的命名映射

tensorflow代码在加载ckpt模型时一般会使用如下代码&#xff1a;saver tf.train.Saver() with tf.Session() as sess:saver.restore(sess, "model.ckpt")那么问题来了&#xff0c;如果想把开源的ckpt模型加载到自己代码里不同的变量命名空间中&#xff0c; 应该如何…

Flink + Iceberg + 对象存储,构建数据湖方案

简介&#xff1a; 上海站 Flink Meetup 分享内容&#xff0c;如何基于Flink、对象存储、Iceberg 来构建数据湖生态。 本文整理自 Dell 科技集团高级软件研发经理孙伟在 4 月 17 日 上海站 Flink Meetup 分享的《Iceberg 和对象存储构建数据湖方案》&#xff0c;文章内容为&…

fdisk 分区_【linux】循序渐进学运维-基础篇-分区命令fdisk

大家好&#xff0c;我是高胜寒&#xff0c;本文是Linux运维-循序渐进学运维-基础篇的第47篇文章。本文我们来讨论一下fdisk命令的使用&#xff0c;使用fdisk可以做分区管理。1. 命令概述&#xff1a;fdisk 作用&#xff1a; 磁盘分区&#xff0c;是Linux发行版本中最常用的分区…

自动生成考勤表_可自动变色的考勤表,逢周末自动更新,你会制作吗?

员工考勤表对于许多职场HR来说&#xff0c;应该是再熟悉不过。一般情况下的考勤表都是按照月份进行统计&#xff0c;比如说11月分1-30号每天会对人员出勤情况进行登记。为了方便我们对表格的查看&#xff0c;我们经常会看到周末两天的单元格颜色会不同。如上图所示&#xff0c;…

通盘无妙手,恒生电子落子 Light 云,三大新品持续提升金融科技生产力

据普华永道《2020年与未来的金融服务技术&#xff1a;拥抱颠覆者》报告显示&#xff0c;全球 81% 银行 CEO 在众多领域中十分关注科技发展。在“无科技不金融”的趋势下&#xff0c;科技深度影响金融行业改革。 伴随云计算、大数据、人工智能、区块链等关键技术的发展&#xf…

实时数仓入门训练营:基于 Apache Flink + Hologres 的实时推荐系统架构解析

简介&#xff1a; 《实时数仓入门训练营》由阿里云研究员王峰、阿里云资深技术专家金晓军、阿里云高级产品专家刘一鸣等实时计算 Flink 版和 Hologres 的多名技术/产品一线专家齐上阵&#xff0c;合力搭建此次训练营的课程体系&#xff0c;精心打磨课程内容&#xff0c;直击当下…

沙盒化容器:是容器还是虚拟机

作者 | Addo Zhang来源 | 云原生指北随着 IT 技术的发展&#xff0c;AI、区块链和大数据等技术提升了对应用毫秒级扩展的需求&#xff0c;开发人员也面临着的功能快速推出的压力。混合云是新常态&#xff0c;数字化转型是保持竞争力的必要条件&#xff0c;虚拟化成为这些挑战的…

实时数仓入门训练营:实时计算 Flink 版 SQL 实践

简介&#xff1a; 《实时数仓入门训练营》由阿里云研究员王峰、阿里云资深技术专家金晓军、阿里云高级产品专家刘一鸣等实时计算 Flink 版和 Hologres 的多名技术/产品一线专家齐上阵&#xff0c;合力搭建此次训练营的课程体系&#xff0c;精心打磨课程内容&#xff0c;直击当下…