当前位置: 首页 > 科技观察

RDSPostgreSQL一键大版本升级技术解密

时间:2023-03-12 21:44:57 科技观察

一、PostgreSQL在行业中的地位(1)Industryposition在行业中的地位。Gartner2020魔力象限领导者,阿里云数据库跻身全球数据库魔力象限领导者PG年度最佳产品奖2020PG亚洲大会,阿里云数据库专属集群MyBase荣获“PG年度最佳产品奖”接下来,让我们一起来看看看看PG数据库在业界的地位。全球数据库排名PostgreSQL连续3年获得最佳数据库开源数据库排名TOP2位置,全球流行趋势排名TOP4广泛使用P广泛应用于各行各业,包括:计算机软件、信息技术与服务、医疗以及健康、金融服务、高等教育、通信服务等。(二)RDSPGVS自建PG大致了解了PG在行业中的地位之后,我们再来看看阿里云RDSPG与自建相比的优势PG。如上图所示,与自建PG相比,RDSPG的优势主要体现在可靠性、安全性、智能化和丰富的插件四个方面。1.可靠性RDSPG提供LogicalSlotFailover能力。这样的话,当实例被HA切换时,LogicalSlot可以继续为用户提供数据同步,解决了自建PG在HA切换时无法实现增量数据同步的问题。RDSPG的Standby支持多个上游节点。HA切换后,只读实例的读写分离功能仍然可以保持,不影响只读节点的数据同步。一键大版本升级,让我们的用户一键升级到更高版本的PG,享受PG升级后的功能和稳定性。2.安全安全主要分为三个方面。首先,RDSPG提供了云盘加密功能。用户只需要提供一个Key,RDSPG就可以使用这个用户自定义的Key来加密磁盘上的数据。其次,我们发布了SSL自定义证书功能,为客户端和服务器提供自定义证书,为客户端和服务器提供防伪装,提高数据库安全性。最后,RDSPG提供了SGX全加密,这是一种基于硬件的加密技术,可以让数据在整个链路上进行加密。3、智能阿里云RDS全系列产品提供DAS服务。帮助用户在使用数据库的过程中提供诊断和优化能力,DAS可以通过自我发现、自我诊断、自我优化、自我决策的方式,帮助用户解决用户数据库问题。4.丰富的插件RDSPG的Ganos时空引擎插件提供了时空数据的存储、检索、查询和分析能力。第二个插件是PASEEfficientVectorSearch插件。第三个插件oss_fdw,实现了冷热数据分离的场景,冷数据存储在便宜的OSS上,可以在RDSPG上查询分析OSS上的数据。由上可知,与自建PG相比,RDSPG在可靠性、安全性、智能化、插件丰富性等方面具有明显优势。二、PostgreSQL版本升级背景PostgreSQL的升级功能源于用户在使用中遇到的一些问题,我们在升级过程中也面临着很多挑战。1.遇到的问题老版本:过时不维护数据库版本太低,稳定性挑战,如:1)PG9.4,版本太旧2)版本低,供应链问题3)社区不维护,没人知道底线版本:新特性用户对高版本和新特性有强烈的需求,例如:1)增量排序2)并行索引垃圾收集3)索引去重能力4)分区表和聚合性能提升2.面临的挑战弹性:ExtremeElasticPG9.4和PG10.0本地盘版本运行在物理机上,导致弹性能力相对较弱,例如:1)秒级快照2)弹性扩展3)更大的存储空间支持4)备份操作没有性能损失平滑割接:小应用感知在一键大版本升级的过程中,如何让用户应用尽可能小,平滑割接又是一个巨大的挑战,比如as:1)保证插件兼容性2)割接、非割接模式3)回滚和可验证能力4)零变更应用,感知小5)一键大版本升级产品化能力割接,提供可验证和回滚能力.三、PostgreSQL版本升级解密(一)设计原则基于以上产品考虑,我们在设计RDSPG的过程中主要遵循以下四个原则。1.验证回滚:可验证,回滚-版本回滚:大版本回滚-DNS地址:连接字符串回滚-可验证:高版本可验证性2.少限制:场景全覆盖-DDL限制-表结构限制-数据类型限制-版本覆盖3.一键升级:一键升级产品化-拒绝升级手动-一键产品化能力-插件兼容性适配4.平滑割接:不间断应用四大设计原则的出发点是我们希望把复杂留给自己,把简单留给用户,把极致留给用户。产品体验。(2)方案选择基于以上设计原则,我们将选择升级方案。对于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)应用关闭时间长,RDSPG最终选择了pg_upgrade方案,限制少,兼容性好,效率高,割接平滑。(3)升级预检查升级前,用户需要对实例进行升级预检查。检查过程可以让用户知道该实例是否可以升级,升级会存在哪些问题,用户可以根据错误信息进行相应的修改或适配。从而顺利完成升级。升级预检流程如下:升级预检流程图首先用户到前端控制台,根据源实例的版本选择目标实例的版本,然后提交升级预检-检查进程,我们的后台会生成升级检查报告。然后初始化用户选择的高版本数据目录,然后生成高版本参数模板。然后执行pg_upgrade--check,最后将检查报告上传到控制台,用户可以在RDS控制台查看报告。以下是一份典型的升级预检报告。您可以看到升级预检查结果。该报告包括许多检查项目。是否可以升级一目了然,帮助用户在升级前屏蔽升级风险。(4)正式升级升级预检完成无误后,进入正式升级流程,如下图所示。如上图所示,流程图的每一步都包含两个角色,分别是升级前的源实例和升级后的目标实例。升级前,用户通过DNS连接到源实例。当用户在控制台发起大版本升级时,我们会在后台帮助用户创建与源实例同版本的目标实例的主节点,并建立复制链接。等待复制链路建立,所有数据同步完成后,等待用户的切换时间。时间到了,我们将在源实例上执行Readonly。第四步,断开源实例和目标实例的连接,断开后将目标实例提升为主库。第五步执行pg_upgrade操作升级元数据,所以效率非常高,然后将用户的DNS地址切换到目标实例,此时用户应用可以读写。第六步是重新配置数据库。利用秒级快照能力,可以快速建立备份数据库,最终将整个实例顺利升级到更高版本。整个升级过程有以下几个关键点:应用不停运行1)不停:用户应用全程可以读取2)流畅:第5步,通过交换连接地址,用户应用不需要修改代码进行验证和回滚1)可验证:非割接模式,对源实例零干预2)回滚:在第5步之前,零成本回滚,连接地址可以随时回滚效率高1)快速:步骤5pg_upgrade2Tdata10秒内即可完成升级。2)重装快:秒级快照,无论数据大小,10分钟左右重新配置数据库。用户影响1)步骤3-5,仅分钟级RO时间总结:应用服务器不停机,零宕机,仅分钟级RO。(5)应用升级过程无宕机,零宕机。应用程序的不停机和零停机的过程主要是通过以下四点来实现的。1.克隆目标实例目标实例采用类克隆实例方案,源实例始终可用。2.可验证和回滚非割接模式提供验证能力,连接地址可以在切换前回滚。3.DNS地址切换切换用户连接DNS地址到目标实例,避免应用变更。4.pg_upgrade元数据升级pg_upgrade只升级元数据,耗时与数据大小无关。2TB数据实测不到10秒。通过以上四点,可以一键顺利完成大版本升级。四、PostgreSQL版本升级结果(一)结果显示,阿里云RDSPG大版本升级在覆盖率、易用性、效率、可验证性和回滚能力等方面取得了显着的效果。(二)行业对比阿里云RDSPG一键大版本升级在产品化、用户体验、可验证回滚能力等方面领先行业原文链接:http://click.aliyun.com/m/1000283547/