成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

AnalyticDB PostgreSQL 教你實現分布式一致性備份恢復

網絡 分布式 PostgreSQL
ADB PG 是采用MPP水平擴展架構的分布式數據庫。ADB PG實例由一個或多個協調節點(Master)和多個計算節點(Compute Node)組成,協調節點負責接收用戶請求,制定分布式執行計劃并下發至計算節點,收集執行結果并返回給客戶端;計算節點負責并行計算分析與數據存儲。

 一、背景

AnalyticDB PostgreSQL版(簡稱ADB PG)是阿里云數據庫團隊基于PostgreSQL內核(簡稱PG)打造的一款云原生數據倉庫產品。在數據實時交互式分析、HTAP、ETL、BI報表生成等業務場景,ADB PG都有著獨特的技術優勢。

作為一款企業級數據倉庫產品,數據安全的重要性不言而喻。備份恢復功能是保障數據安全的基本手段,也是ADB PG應對突發狀況進行數據庫恢復的重要保障。備份恢復,顧名思義,是對數據庫進行數據備份,以便在必要時進行數據的恢復,防范于未然。當前,ADB PG的備份恢復功能已經應用在以下各個用戶場景中:

由于系統故障、人為誤操作造成數據被破壞或實例不可用時,基于備份數據對實例進行恢復。
用戶需要基于已有實例,快速克隆出一個完全相同的實例。
在節點數不變的前提下,用戶需要更改源實例的規格。
本文將介紹ADB PG備份恢復的原理與使用方法。

二、簡介

ADB PG 是采用MPP水平擴展架構的分布式數據庫。ADB PG實例由一個或多個協調節點(Master)和多個計算節點(Compute Node)組成,協調節點負責接收用戶請求,制定分布式執行計劃并下發至計算節點,收集執行結果并返回給客戶端;計算節點負責并行計算分析與數據存儲。數據在計算節點之間可以隨機、哈希、復制分布。下圖ADB PG的架構圖:

ADB PG的物理備份恢復功能,基于集群的基礎備份和日志備份,可以在分布式數據庫繼續提供服務的同時備份各個節點的數據,并保證數據的一致性。在需要時,可以將分布式數據庫恢復至備份的時刻。

基礎備份是指對數據庫所有數據進行的一個完全拷貝。基礎備份會將集群全量數據快照壓縮后存儲在其它離線存儲介質,集群在基礎備份期間不會阻塞用戶的讀寫,因此,備份期間產生的日志也會被備份來保證基礎備份的完整性。

日志備份(也稱為增量備份),是指將集群產生的日志文件備份至其他離線存儲介質。日志文件記錄了用戶對數據庫的DML與DDL操作。通過一個完整的基礎備份以及連續的日志備份,可以將新集群恢復到某一歷史事件點,保證了這段時間的數據安全性。

ADB PG可保障最小RPO為10分鐘的備份恢復。

三、原理

在完整地介紹ADB PG的備份恢復原理之前,先簡要地介紹單機PG的PITR(Point in Time Recovery)備份恢復機制。ADB PG的備份恢復機制基于單機PG的PITR原理,并加入了分布式數據一致性的保障機制。

(一)單機PG的PITR機制

WAL日志:

PostgreSQL數據庫會將事務對數據的所有更改(包括DDL、DML等操作)記錄在WAL(Write Ahead Log)日志文件中。WAL日志文件可以看作是一個無限增長的只追加文件,PG會將日志數據按固定大小切分成多個文件存儲。事務的每次修改數據的操作都會被追加記錄至WAL文件中,并賦予一個唯一的LSN序號(Log Sequence Number),在事務提交時,會保證WAL日志已持久化。

這些日志文件的作用是為了讓數據庫在需要恢復時,可以通過“重放”WAL日志來恢復數據庫崩潰時還未持久化,但對應事務已提交的數據。

恢復點:

有了WAL日志可以進行“重放”操作,那么還有一個問題:需要重放到什么時候呢?這就需要恢復點(restore point)來解決。

恢復點相當于WAL日志中寫入的一個標記,它標記了一個日志的位置。當PG對日志進行重放時,通過檢查是否已經到達這個標記點,來決定是否需要停止"重放"的操作。

以下SQL可以在WAL日志文件中創建一個名為t1的標志點:

  1. postgres=# select pg_create_restore_point('t1');LOG:  restore point "t1" created at 0/2205780STATEMENT:  select pg_create_restore_point('t1'); pg_create_restore_point------------------------- 0/2205780(1 row) 

當數據庫順序回放WAL日志時,會檢查當前日志包含此恢復點名稱,若已包含,則停止重放。另外,PG還支持恢復至指定的任意時間點,事務號,LSN序號等操作。

基礎備份與增量備份:

基礎備份是對數據庫數據的一份完整拷貝。可以使用pg_basebackup工具對單機PG進行一次基礎備份,備份數據可保存至本地,也可存儲在其他離線存儲介質(OSS)中。

  1. $ pg_basebackup -D pg_data_dir/ -p 6000NOTICE:  pg_stop_backup complete, all required WAL segments have been a 

增量備份是指對產生的WAL日志文件進行備份。在PG中,可通過數據庫參數archive_command來指定如何備份WAL日志數據。當PG生成一個WAL日志文件時,會通過執行archive_command的命令來嘗試備份歸檔該日志文件。比如,如下命令會將日志文件發送至指定的OSS。

archive_command="ossutil cp %p oss://bucket/path/%f"

單機PG的全量備份與增量備份

需要注意的是,基礎備份期間并不會阻塞數據庫的讀寫,因此備份期間的數據更新對應的WAL日志也需要備份,以備恢復時保證數據的一致性。

PITR恢復:

當需要恢復數據庫時,首先下載基礎備份數據,然后使用基礎備份開啟集群,再下載日志文件備份,“重放”至指定的恢復點即可進行數據庫的恢復。在單機PG中, 指定的恢復點的目標可以是事務號、時間戳、WAL序號(LSN)以及某個恢復點名稱。

(二)ADB PG的分布式一致性備份恢復機制

ADB PG 作為分布式數據庫,使用兩階段事務提交來管理分布式事務。如果照搬單機PG的PITR機制,會造成數據的不一致。比如如下場景:分布式事務按照A、B、C時間順序分配,但由于種種原因(如網絡延時、節點負載、顯式提交等),分布式模式下事務的提交的順序在各個節點可能各不相同,如下圖所示:

Master 按照 A、B、C順序提交
Compute Node 1 按照 A、C、B順序提交
Compute Node 2 按照 B、C、A順序提交

如果在此過程中,創建了恢復點,當恢復時如果指定恢復至該恢復點,顯而易見,恢復后集群中各個節點所處的狀態是不一致的。

兩階段事務提交鎖與一致性恢復點:

為了解決上述的問題,我們引入了兩階段事務提交鎖。分布式事務提交會以SHARED模式獲得該鎖,而創建恢復點都需要以EXCLUSIVE模式獲得該鎖。于是在集群中如果有分布式事務正在等待各個節點上提交,那么集群創建恢復點的動作必須等待所有節點上的分布式事務提交完后,才能進行。

這從根本上解決了上述這就解決了在分布式事務還在提交的同時創建恢復點而造成恢復時數據不一致的問題。引入了兩階段提交鎖機制之后,我們可以保證創建的恢復點所對應的各節點狀態是一致的,因此我們將ADB PG中創建的恢復點稱為一致性恢復點。

分布式備份與恢復過程:

有了事務提交鎖與一致性恢復點之后,我們就可以放心地對ADB PG各個節點進行備份和創建一致性恢復點,而無需擔心節點狀態不一致的問題。

ADB PG的備份也分為基礎備份和日志備份(也稱為增量備份)。基礎備份是對集群每個節點進行的一次完整拷貝,ADB PG會對計算節點和協調節點并發地進行備份,將備份數據流式保存至離線存儲(如OSS)。在進行基礎備份的期間,不會阻塞集群的讀寫服務。因此,如果在基礎備份期間,用戶有寫入和更新的數據,也需要將數據更改對應的WAL日志進行備份。如下圖所示, ADB PG會對每個節點并行地進行一次數據拷貝,將數據流式上傳至OSS。

ADB PG基礎備份過程

ADB PG的日志備份是對集群中的計算節點和協調節點產生的WAL日志的備份。各個節點會將自己生成的WAL日志轉儲至離線存儲(如OSS)。同時,集群會定時地創建一致性恢復點,并將包含一致性恢復點的WAL日志進行備份。

當需要恢復新的集群時,需要同時使用基礎備份與日志備份,并首先創建一個節點數和原實例相同的恢復實例。各個節點并行拉取指定的基礎備份至本地。之后,每個節點自己拉取自己所需的WAL日志備份文件,在本地重放,直到重放至指定的一致性恢復點而停止。最終,我們就能得到一個新的集群,并保證數據和狀態與源實例在一致性恢復點對應的數據與狀態一致。恢復的過程如下圖所示:

四、使用

(1)控制臺備份相關信息

查看基礎備份集
用戶在實例控制臺的“備份恢復”頁面,可以查看數據庫的基礎備份數據。目前基礎備份數據保存在OSS上,默認保留天數為7天。

表格中每一行表示一份基礎備份數據,并記錄了備份的開始時間,結束時間,備份狀態(成功/失敗),備份數據大小以及一致性時間點。一致性時間點表示此基礎備份數據可以將集群恢復至該歷史時間點,并使數據庫處于一致性狀態。

查看一致性恢復點

一致性恢復點是指集群可以恢復到的某個歷史時間點。用戶在備份恢復頁面的“恢復點”頁可以查看當前實例的所有恢復點。

表格中每一行表示一個一致性恢復點,并記錄了恢復點的時間戳,表示該恢復點可以讓集群恢復至此歷史時間點。

查看日志文件列表

日志文件記錄了數據庫的所有更改,在集群恢復時會使用相應的日志文件將集群恢復至一致性狀態,當前用戶集群恢復的日志文件都保存在OSS上。用戶在備份恢復頁面的"日志備份"中可查看日志文件列表。

查看備份策略

備份策略是指實例進行備份的周期與時間段,創建一致性恢復點的頻率,以及數據備份的保留天數等等。

用戶可在備份恢復的“備份設置”中查看和修改備份策略。

修改備份策略

點擊“修改備份配置”按鈕,可以對備份策略進行修改。

(2)實例恢復步驟

首先查看源實例上的數據

進入恢復頁面

用戶可以在控制臺的實例列表,數據備份列表或恢復點列表點擊恢復進入實例恢復頁面;

恢復頁面如下:

恢復實例的售賣頁面與購買實例的頁面大體一致,但多了如下限制:

1.當前恢復實例是master數量必須選擇1個

2.選擇的實例segment(computer node)數量必須與源實例保持一致

3.選擇的實例存儲空間必須大于或等于源實例

選擇恢復時間點
在恢復頁面的"克隆源備份集"的下拉框中選擇需要恢復實例到哪一個歷史時間點,即指定一個一致性恢復點。

點擊購買

用戶點擊購買后,與購買新實例的流程一樣,需要等待實例創建完成后,可在控制臺看到新恢復出的實例。

恢復的新實例

查看恢復的新實例上的數據,可以看到數據與源實例完全一致。

五、總結

備份恢復對ADB PG保障數據安全的具有很重要的價值。當前備份恢復功能已經應用多個用戶場景,并保障了最少為10分鐘的RPO。未來ADB PG備份恢復功能會繼續優化備份恢復性能,支持差異化備份,支持更多的存儲介質,提高用戶使用體驗,為用戶提供更多的功能、性能和成本優化。

 

責任編輯:梁菲 來源: 阿里云云棲號
相關推薦

2019-10-11 23:27:19

分布式一致性算法開發

2019-09-05 08:43:34

微服務分布式一致性數據共享

2021-11-22 16:30:30

分布式一致性分布式系統

2017-09-21 10:59:36

分布式系統線性一致性測試

2024-11-28 10:56:55

2021-07-28 08:39:25

分布式架構系統

2022-06-07 12:08:10

Paxos算法

2021-06-03 15:27:31

RaftSOFAJRaft

2025-06-09 08:00:37

分布式文件系統

2024-01-31 09:54:51

Redis分布式

2021-06-06 12:45:41

分布式CAPBASE

2024-06-04 10:58:30

2017-09-22 12:08:01

數據庫分布式系統互聯網

2020-10-28 11:15:24

EPaxos分布式性算法

2023-11-06 09:06:54

分布式一致性數據

2023-08-15 09:31:01

分布式緩存

2020-05-11 10:30:57

2PC分布式協議

2021-06-16 08:33:02

分布式事務ACID

2018-03-19 09:50:50

分布式存儲系統

2025-03-14 08:00:00

分布式系統服務器一致性
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美视频免费在线 | 成年人免费在线视频 | 一区二区三区视频在线 | 91视在线国内在线播放酒店 | 久久国产成人精品国产成人亚洲 | 久久久人成影片一区二区三区 | 五月综合激情在线 | 国产福利免费视频 | 久久香焦| 日韩成人精品在线观看 | 亚洲视频中文字幕 | 国产色婷婷精品综合在线手机播放 | 欧美福利视频一区 | 免费人成激情视频在线观看冫 | 国产精品一区视频 | 日韩中文字幕免费在线 | 精品久久香蕉国产线看观看亚洲 | 久久久久久久久久久蜜桃 | 日韩精品在线看 | 欧区一欧区二欧区三免费 | 精品在线免费观看视频 | 久久不卡 | 欧美精品久久久久 | 久久久久国产精品一区二区 | 国产一区二区在线播放 | 黄视频网址 | 日韩成人专区 | 国产日韩欧美二区 | 国产一区中文字幕 | 91精品国产91久久久久久吃药 | 天天想天天干 | 国产三级电影网站 | 日韩精品在线播放 | 亚洲精品电影在线观看 | 日韩精品一区二区三区 | 亚洲国产中文字幕 | 天天天久久久 | 国产高清视频 | 免费在线一区二区三区 | 97精品久久 | 久久久精品一区 |