模板网站也可以做优化,九寨沟网站开发的背景,网站改版协议,昌邑住房和城乡建设局网站简介#xff1a; 内容简要#xff1a; 一、PostgreSQL行业位置 二、PostgreSQL版本升级背景 三、PostgreSQL版本升级解密 四、PostgreSQL版本升级成果
一、PostgreSQL行业位置
#xff08;一#xff09;行业位置
在讨论PostgreSQL#xff08;下面简称为PG#xff09;在…简介 内容简要 一、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相比有哪些方面的优点。 *如上图所示相对于自建PGRDS PG的优势主要体现在
可靠性、安全性、智能化和丰富插件四个方面
1.可靠性
RDS PG提供了Logical Slot Failover能力在主备模式下当实例发生HA切换以后Logical Slot可以继续为用户提供数据同步这解决了自建PG在HA切换时无法做到数据增量同步的问题。
RDS PG的Standby支持多上游结点当HA切换以后依然可以保持只读实例读写分离功能, 不影响只读节点的数据同步。
一键大版本升级使得我们的用户可以产品化地一键升级到更高版本的PG享受PG更新版本的特性与稳定性。
2.安全性
安全性主要分为三个方面。
首先RDS PG提供云盘加密功能用户只需要提供一个KeyRDS PG就可以使用这个用户自定义的Key对数据进行落盘加密。
其次我们发布了SSL自定义证书功能提供客户端以及服务端的自定义证书提供客户端和服务端防伪装,提升数据库安全性。
最后RDS PG提供SGX全加密这个功能是基于硬件的加密技术使数据在全链路上进行加密。
3.智能化
阿里云RDS的整个产品系列都提供了DAS服务。帮助用户在使用数据库的过程提供诊断优化能力DAS可以帮助用户自发现、自诊断、自优化、自决策地解决用户数据库的问题。
4.丰富插件
RDS PG的Ganos时空引擎插件提供了时空数据的存储、检索、查询以及分析能力。
第二个插件是PASE高效向量检索插件。
第三个插件是oss_fdw实现数据冷热分离的场景将冷数据存储在更为低价的OSS上在RDS PG上可以对OSS上的数据进行查询分析。
通过以上可以发现相较自建PGRDS PG在可靠性、安全性、智能化、插件丰富度方面优势明显。
二、PostgreSQL版本升级背景
PostgreSQL的升级功能源于用户使用中遇到的一些问题在升级中我们也面临许多挑战。 1.遇到的问题
老版本过时不维护
过低的数据库版本,稳定性挑战, 比如:
1PG 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一键大版本升级在产品化、用户体验、可验证可回滚能力上引领行业
原文链接 本文为阿里云原创内容未经允许不得转载。