自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

RDS PostgreSQL一鍵大版本升級(jí)技術(shù)解密

數(shù)據(jù)庫 PostgreSQL
阿里云RDS PG大版本升級(jí)在覆蓋面、可用性、效率、可驗(yàn)證可回滾能力方面取得顯著成果。

 一、PostgreSQL行業(yè)位置

(一)行業(yè)位置

在討論P(yáng)ostgreSQL(下面簡稱為PG)在整個(gè)數(shù)據(jù)庫行業(yè)的位置之前,我們先看一下阿里云數(shù)據(jù)庫在全球的數(shù)據(jù)庫行業(yè)里的位置。

魔力象限領(lǐng)導(dǎo)者

Gartner 2020,阿里云數(shù)據(jù)庫挺進(jìn) 全球數(shù)據(jù)庫魔力象限領(lǐng)導(dǎo)者

PG年度最佳產(chǎn)品獎(jiǎng)

2020 PG亞洲大會(huì)上,阿里云數(shù)據(jù)庫專屬集群MyBase榮膺“PG年度最佳產(chǎn)品獎(jiǎng)”

接下來,我們看一下PG數(shù)據(jù)庫在行業(yè)中的位置。

全球數(shù)據(jù)庫排行

PostgreSQL連續(xù)3年獲得的最佳數(shù)據(jù)庫在開源數(shù)據(jù)庫排名TOP2位置,全球流行度趨勢排名TOP4

廣泛應(yīng)用

P廣泛運(yùn)用于各行各業(yè),包含:計(jì)算機(jī)軟件、信息技術(shù)及服務(wù)、醫(yī)療及健康、金融服務(wù)、高等教育、通訊服務(wù)等領(lǐng)域

(二)RDS PG VS 自建PG

在大致了解PG在行業(yè)的位置后,接下來再看看阿里云RDS PG和自建PG相比有哪些方面的優(yōu)點(diǎn)。

 

如上圖所示,相對(duì)于自建PG,RDS PG的優(yōu)勢主要體現(xiàn)在:可靠性、安全性、智能化和豐富插件四個(gè)方面

1.可靠性

RDS PG提供了Logical Slot Failover能力,在主備模式下,當(dāng)實(shí)例發(fā)生HA切換以后,Logical Slot可以繼續(xù)為用戶提供數(shù)據(jù)同步,這解決了自建PG在HA切換時(shí)無法做到數(shù)據(jù)增量同步的問題。

RDS PG的Standby支持多上游結(jié)點(diǎn),當(dāng)HA切換以后,依然可以保持只讀實(shí)例讀寫分離功能, 不影響只讀節(jié)點(diǎn)的數(shù)據(jù)同步。

一鍵大版本升級(jí)使得我們的用戶可以產(chǎn)品化地一鍵升級(jí)到更高版本的PG,享受PG更新版本的特性與穩(wěn)定性。

2.安全性

安全性主要分為三個(gè)方面。

首先,RDS PG提供云盤加密功能,用戶只需要提供一個(gè)Key,RDS PG就可以使用這個(gè)用戶自定義的Key對(duì)數(shù)據(jù)進(jìn)行落盤加密。

其次,我們發(fā)布了SSL自定義證書功能,提供客戶端以及服務(wù)端的自定義證書,提供客戶端和服務(wù)端防偽裝,提升數(shù)據(jù)庫安全性。

最后,RDS PG提供SGX全加密,這個(gè)功能是基于硬件的加密技術(shù),使數(shù)據(jù)在全鏈路上進(jìn)行加密。

3.智能化

阿里云RDS的整個(gè)產(chǎn)品系列都提供了DAS服務(wù)。幫助用戶在使用數(shù)據(jù)庫的過程提供診斷優(yōu)化能力,DAS可以幫助用戶自發(fā)現(xiàn)、自診斷、自優(yōu)化、自決策地解決用戶數(shù)據(jù)庫的問題。

4.豐富插件

RDS PG的Ganos時(shí)空引擎插件提供了時(shí)空數(shù)據(jù)的存儲(chǔ)、檢索、查詢以及分析能力。

第二個(gè)插件是PASE高效向量檢索插件。

第三個(gè)插件是oss_fdw,實(shí)現(xiàn)數(shù)據(jù)冷熱分離的場景,將冷數(shù)據(jù)存儲(chǔ)在更為低價(jià)的OSS上,在RDS PG上可以對(duì)OSS上的數(shù)據(jù)進(jìn)行查詢分析。

通過以上可以發(fā)現(xiàn),相較自建PG,RDS PG在可靠性、安全性、智能化、插件豐富度方面優(yōu)勢明顯。

二、PostgreSQL版本升級(jí)背景

PostgreSQL的升級(jí)功能源于用戶使用中遇到的一些問題,在升級(jí)中我們也面臨許多挑戰(zhàn)。

1.遇到的問題

老版本:過時(shí)不維護(hù)

過低的數(shù)據(jù)庫版本,穩(wěn)定性挑戰(zhàn), 比如:

1)PG 9.4,版本過老2)低版本,供應(yīng)鏈問題3)社區(qū)不維護(hù),無人兜底

高版本:新特性

用戶對(duì)于高版本、新特性的強(qiáng)力需求, 比如:

1)增量排序2)并行索引垃圾回收3)索引deduplicate能力4)分區(qū)表、聚合性能提升

2.面臨的挑戰(zhàn)

彈性能力:極致彈性

PG 9.4和PG 10.0本地盤版本是跑在物理機(jī)形態(tài)上的,導(dǎo)致彈性能力相對(duì)較弱,比如:

1)秒級(jí)快照2)彈性伸縮能力3)更大存儲(chǔ)空間支持4)備份操作無性能損耗

平滑割接: 應(yīng)用感知小

在一鍵大版本升級(jí)過程中,如何使得用戶應(yīng)用盡可能的感知小,平滑的割接是另外一個(gè)巨大的挑戰(zhàn), 比如:

1)保證插件兼容性

2)割接、非割接模式3)可回滾、可驗(yàn)證能力4)應(yīng)用零改動(dòng)、感知小5)一鍵大版本升級(jí)產(chǎn)品化能力

總結(jié)而言,我們期望RDS PG能夠產(chǎn)品化一鍵大版本升級(jí)、平滑割接、提供可驗(yàn)證、可回滾能力。

三、PostgreSQL版本升級(jí)解密

(一)設(shè)計(jì)原則

基于以上對(duì)產(chǎn)品的思考,我們?cè)谠O(shè)計(jì)RDS PG的過程中主要遵循以下四大原則。

1.驗(yàn)證回滾:可驗(yàn)證、可回滾-版本回滾:大版本回滾-DNS地址:連接字符串回滾-可驗(yàn)證: 高版本可驗(yàn)證能力

2.限制要少:場景全覆蓋-DDL限制-表結(jié)構(gòu)限制-數(shù)據(jù)類型限制-版本全系覆蓋

3.一鍵升級(jí):一鍵升級(jí)產(chǎn)品化-拒絕升級(jí)手冊(cè)-一鍵產(chǎn)品化能力-插件兼容性適配

4.平滑割接:應(yīng)用不停服零宕機(jī)-升級(jí)過程應(yīng)用不停服-升級(jí)過程速度快-連接地址平滑割接

這四大設(shè)計(jì)原則的出發(fā)點(diǎn)在于,我們希望將復(fù)雜留給自己,把簡單留給用戶,為用戶帶去極致的產(chǎn)品使用體驗(yàn)。

(二)方案選擇

基于上方的設(shè)計(jì)原則,我們就要對(duì)升級(jí)方案進(jìn)行選擇。對(duì)于PG大版本升級(jí),行業(yè)內(nèi)主要有如下存在三種方案。

方案一:邏輯復(fù)制

優(yōu)點(diǎn):

兼容性好、平滑割接

缺點(diǎn):

1)庫級(jí)別的發(fā)布、訂閱

2)表必須有PK / UK3)不支持DDL、大對(duì)象4)外鍵和觸發(fā)器禁用5)可能導(dǎo)致到WAL日志堆積

方案二:pg_upgrade

優(yōu)點(diǎn):

1)不拷貝數(shù)據(jù), 僅元數(shù)據(jù)升級(jí)

2)效率高, 2TB數(shù)據(jù),升級(jí) < 10s

缺點(diǎn):

1)升級(jí)預(yù)檢查

2)回滾驗(yàn)證策略3)參數(shù)、插件兼容性4)復(fù)雜度高、工作量大、挑戰(zhàn)大

方案三:pg_dump

優(yōu)點(diǎn):

1)兼容性好

2)實(shí)現(xiàn)簡單、工作量小

缺點(diǎn):

1)僅適用全量遷移

2)效率低下3)應(yīng)用停服時(shí)間長

RDS PG最終選擇限制少、兼容性好、效率高、平滑割接的pg_upgrade方案。

(三)升級(jí)預(yù)檢查

用戶升級(jí)之前需要先對(duì)實(shí)例進(jìn)行升級(jí)預(yù)檢查,檢查流程可以讓用戶知道實(shí)例是否可以升級(jí),升級(jí)會(huì)存在什么問題,然后用戶再根據(jù)錯(cuò)誤的信息做相應(yīng)的修改或適配,使得升級(jí)可以順利完成。升級(jí)預(yù)檢查流程如下:

升級(jí)預(yù)檢查流程圖

首先,用戶到前端控制臺(tái),根據(jù)源端實(shí)例的版本選擇目標(biāo)實(shí)例的版本,然后提交升級(jí)預(yù)檢查流程,我們的后臺(tái)會(huì)創(chuàng)建一個(gè)升級(jí)檢查報(bào)告。接著初始化用戶選擇的高版本數(shù)據(jù)目錄,然后生成高版本參數(shù)模板。

然后執(zhí)行pg_upgrade--check,最終上傳檢查報(bào)告到控制臺(tái)上,用戶在RDS控制臺(tái)就可以查看報(bào)告,如下是一個(gè)典型的升級(jí)預(yù)檢查報(bào)告。

升級(jí)預(yù)檢查結(jié)果

可以看到,報(bào)告包括非常多的檢查項(xiàng),是否可以升級(jí)結(jié)果一目了然,幫助用戶升級(jí)前屏蔽升級(jí)風(fēng)險(xiǎn)。

(四)正式升級(jí)

升級(jí)預(yù)檢查完成且無誤后,就進(jìn)入了正式升級(jí)流程,流程圖如下所示。

如上圖所示,流程圖的每個(gè)步驟都包含兩個(gè)角色,分別是用戶升級(jí)前的源實(shí)例和升級(jí)后的目標(biāo)實(shí)例。

升級(jí)之前,用戶通過DNS連接到源實(shí)例。當(dāng)用戶在控制臺(tái)發(fā)起一個(gè)大版本升級(jí)以后,我們會(huì)在后臺(tái)幫用戶創(chuàng)建一個(gè)和源實(shí)例同版本的目標(biāo)實(shí)例的master節(jié)點(diǎn),并且搭建復(fù)制鏈路。等待復(fù)制鏈路搭建好了,所有的數(shù)據(jù)同步完畢以后,待用戶的切換時(shí)間。時(shí)間點(diǎn)到了以后,我們就會(huì)對(duì)源實(shí)例做Readonly。

第4步是把源實(shí)例和目標(biāo)實(shí)例進(jìn)行斷連,斷連后把目標(biāo)實(shí)例提升為主庫。

第5步是進(jìn)行pg_upgrade操作,做元數(shù)據(jù)的升級(jí),所以效率非常高,然后把用戶的DNS地址切到目標(biāo)實(shí)例上,此時(shí)用戶應(yīng)用就可以進(jìn)行讀和寫。

第6步重搭備庫,利用秒級(jí)快照能力,可以快速搭建備庫,最終將整個(gè)實(shí)例平滑升級(jí)到高版本。

整個(gè)升級(jí)流程有以下幾個(gè)關(guān)鍵的地方:

應(yīng)用不停服

1)不停服:用戶應(yīng)用全程可讀

2)平滑性: 第5步,通過連接地址交換來實(shí)現(xiàn),用戶應(yīng)用無需修改代碼

可驗(yàn)證可回滾

1)可驗(yàn)證: 非割接模式,源實(shí)例零干預(yù)

2)可回滾: 第5步之前,零代價(jià)回滾,連接地址隨時(shí)可回滾

效率高

1)速度快: 第5步pg_upgrade2T數(shù)據(jù)在10秒內(nèi)可以升級(jí)完畢

2)重搭快: 秒級(jí)快照,10分鐘左右重搭備庫,與數(shù)據(jù)量大小無關(guān)

用戶影響

1)第 3-5 步,僅分鐘級(jí)RO時(shí)間

總結(jié):應(yīng)用不停服,零宕機(jī),僅分鐘級(jí)的RO。

(五)應(yīng)用不停服零宕機(jī)

升級(jí)的過程做到應(yīng)用不停服零宕機(jī),主要是通過以下四點(diǎn)實(shí)現(xiàn)。

1.克隆目標(biāo)實(shí)例目標(biāo)實(shí)例采用類克隆實(shí)例方案,源端實(shí)例一直可用。

2.可驗(yàn)證、可回滾非割接模式提供驗(yàn)證能力,連接地址切換之前,均可回滾。

3.DNS地址切換切換用戶連接DNS地址到目標(biāo)實(shí)例上,避免應(yīng)用改動(dòng)。

4.pg_upgrade元數(shù)據(jù)升級(jí)pg_upgrade僅元數(shù)據(jù)升級(jí),耗時(shí)與數(shù)據(jù)量大小無關(guān),實(shí)測2TB數(shù)據(jù),少于10秒。

通過以上四點(diǎn),最終一鍵平滑地完成大版本升級(jí)。

四、PostgreSQL版本升級(jí)成果

(一)成果展示

阿里云RDS PG大版本升級(jí)在覆蓋面、可用性、效率、可驗(yàn)證可回滾能力方面取得顯著成果。

(二)行業(yè)對(duì)比

阿里云RDS PG一鍵大版本升級(jí)在產(chǎn)品化、用戶體驗(yàn)、可驗(yàn)證可回滾能力上引領(lǐng)行業(yè)

原文鏈接:http://click.aliyun.com/m/1000283547/

責(zé)任編輯:梁菲 來源: 阿里云云棲號(hào)
相關(guān)推薦

2020-12-11 10:40:13

PostgreSQL數(shù)據(jù)庫GitLab

2020-10-15 14:05:30

PostgreSQL升級(jí)開發(fā)

2015-02-09 15:25:52

換膚

2024-04-08 13:59:03

大模型Replicate

2024-08-07 08:08:42

2025-03-20 11:12:50

2012-10-18 14:41:31

2018-12-18 17:25:15

程序員

2021-11-30 08:09:52

PostgreSQLPGTune工具數(shù)據(jù)庫

2015-11-03 15:29:49

ONOS開放網(wǎng)絡(luò)操作系統(tǒng)SDN

2009-07-07 08:44:52

微軟Windows 7新功能

2009-06-23 09:37:29

2023-06-15 10:00:00

Jenkins任務(wù)操作

2025-04-17 04:00:00

2024-08-02 14:50:00

數(shù)據(jù)AI

2019-07-05 09:43:33

AI數(shù)據(jù)科技

2018-03-14 18:31:27

12315支付寶小程序

2015-06-01 15:17:35

阿里云RDSPostgreSQL

2011-05-30 20:48:12

聯(lián)想一體機(jī)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)