自研資料庫CynosDB儲存系統如何實現即時恢復
> 本文由雲 + 社群發表 >本文作者:許中清,騰訊雲自研資料庫 CynosDB 的分散式儲存 CynosStore 負責人。從事資料庫核心開發、資料庫產品架構和規劃。曾就職於華為,2015 年加入騰訊,參與過 TBase(PGXZ)、CynosDB 等資料庫產品研發。專注於關聯式資料庫、資料庫叢集、新型資料庫架構等領域。目前擔任 CynosDB 的分散式儲存 CynosStore 負責人。
CynosDB for PostgreSQL 是騰訊雲自研的一款雲原生資料庫,其主要核心思想來自於亞馬遜的雲資料庫服務 Aurora。這種核心思想就是 “基於日誌的儲存” 和 “儲存計算分離”。同時,CynosDB 在架構和工程實現上確實有很多和 Aurora 不一樣的地方。
下圖為 CynosDB for PostgreSQL 的產品架構圖,CynosDB 是一個基於共享儲存、支援一寫多讀的資料庫叢集。
CynosDB for PostgreSQL 產品架構圖
CynosDB 基於 CynosStore 之上,CynosStore 是一個分散式儲存,為 CynosDB 提供堅實的底座。CynosStore 由多個 Storage Node 和 CynosStore Client 組成。CynosStore Client 以二進位制包的形式與 DB(PostgreSQL)一起編譯,為 DB 提供訪問介面,以及負責主從 DB 之間的日誌流傳輸。除此之外,每個 Storage Node 會自動將資料和日誌持續地備份到騰訊雲物件儲存服務 COS 上,用來實現 PIT(Point In Time)功能。
CynosStore 會為每一個資料庫分配一段儲存空間,我們稱之為 Pool,一個資料庫對應一個 Pool。資料庫儲存空間的擴縮容是通過 Pool 的擴縮容來實現的。一個 Pool 會分成多個 Segment Group(SG),每個 SG 固定大小為 10G。我們也把每個 SG 叫做一個邏輯分片。一個 Segment Group(SG)由多個物理的 Segment 組成,一個 Segment 對應一個物理副本,多個副本通過 RAFT 協議來實現一致性。Segment 是 CynosStore 中最小的資料遷移和備份單位。每個 SG 儲存屬於它的資料以及對這部分資料最近一段時間的寫日誌。
CynosStore 資料組織形式
圖二中 CynosStore 一共有 3 個 Store Node,CynosStore 中建立了一個 Pool,這個 Pool 由 3 個 SG 組成,每個 SG 有 3 個副本。CynosStore 還有空閒的副本,可以用來給當前 Pool 擴容,也可以建立另一個 Pool,將這空閒的 3 個 Segment 組成一個 SG 並分配個這個新的 Pool。
資料庫使用者有可能因為某種原因需要回到過去某個時間點的資料庫快照,CynosDB 提供快照備份特性,滿足使用者的回檔需求。當然,可以回到過去的時間段總是有限的,這取決於快照備份的儲存空間成本。CynosStore 通過持續不斷地將各個 SG 上的資料和日誌備份到騰訊雲物件儲存服務 COS 上。其中,基礎資料的快照根據一定頻率定期備份,而日誌則從 RAFT 狀態機中源源不斷地向 COS 備份。為了避免備份本身對 SG 的同步日誌過程產生影響, SG 會先將日誌持久化到所在 Store Node 的本地儲存,然後通過 Journal Backup Service 將本地 Journal 上傳到 COS。每個 SG 向 COS 備份的過程是完全獨立並互不依賴的。每個 SG 備份時的故障處理也是獨立的。
CynosStore 即時恢復
相比 SG 的備份,一個資料庫例項回檔到某個時間點的過程要複雜得多,因為回檔過程必須保證這個 Pool 的所有 SG 回到同一個快照點。當 CynosStore 接收到一個回檔 Pool 的請求,CynosStore 會根據這個 Pool 上所有 SG 備份的日誌資訊找到並計算出與這個時間點對應的 VDL。這個計算的依據是每個 SG 的日誌中會定期不斷地加入一個時間戳日誌。每個 SG 根據需要回檔的時間點和 Pool 全域性 VDL 找到時間上最接近的前一個快照以及相應的日誌檔案。然後根據快照和日誌重放 SG,各個 SG 重放過
程互不依賴。這個回檔過程藉助 Replayer Service 服務來完成,其根據某個 SG 的快照資料和日誌重放到給定的一致性點,並將新產生的快照資料上傳到 COS。然後由 META Center 在 CynosStore 中構建新的 Pool 和新的 SG,通知新 SG leader 從 COS 獲取剛剛生成的快照資料,這樣就完成了一個 SG 的回檔。當這個 Pool 上所有的 SG 的回檔完成,那麼這個 Pool 的回檔也就完成了。
此文已由作者授權騰訊雲 + 社群釋出
- 加微信實戰群請加微信(註明:實戰群):gocnio
相關文章
- 【儲存資料恢復】IBM儲存檔案NTFS系統損壞的資料恢復案例資料恢復IBM
- 儲存系統實現-如何刪除資料
- 【伺服器資料恢復】StorNext儲存系統資料恢復案例伺服器資料恢復
- 【儲存資料恢復】WAFL檔案系統下raid資料恢復案例資料恢復AI
- 【儲存資料恢復】H3C FlexStorage儲存卷被刪如何恢復資料?資料恢復Flex
- 【伺服器儲存資料恢復】HP-Lefthand儲存資料恢復案例伺服器資料恢復
- 【儲存資料恢復】NetApp儲存誤刪資料夾的資料恢復案例資料恢復APP
- 【儲存資料恢復】HP EVA儲存誤刪除VDISK的資料恢復案例資料恢復
- 【儲存資料恢復】EqualLogic PS系列儲存磁碟故障的資料恢復案例資料恢復
- 【儲存資料恢復】NetApp儲存誤刪除的資料恢復案例資料恢復APP
- 使用儲存指令碼還原恢復資料庫指令碼資料庫
- 【儲存資料恢復】某品牌EqualLogic系列儲存介紹和資料恢復方法資料恢復
- DB2_建立備份恢復使用自動儲存的資料庫DB2資料庫
- 儲存與資料庫系統資料庫
- 【VSAN資料恢復】VSAN儲存資料恢復案例資料恢復
- 儲存崩潰資料恢復過程;資料恢復案例資料恢復
- EMC 儲存資料恢復案例詳解【資料恢復方案】資料恢復
- 【儲存資料恢復】esx vmfs的互斥導致儲存資料丟失的資料恢復案例資料恢復
- 【資料庫資料恢復】linux系統下MYSQL資料庫資料恢復案例資料庫資料恢復LinuxMySql
- 儲存系統實現-資料檔案格式
- 伺服器資料恢復—EMC儲存資料卷被誤刪除如何恢復資料?伺服器資料恢復
- 【伺服器資料恢復】HP EVA儲存資料恢復案例伺服器資料恢復
- SQL Server 系統資料庫恢復SQLServer資料庫
- 【伺服器資料恢復】HP MSA儲存raid5下vxfs檔案系統資料恢復伺服器資料恢復AI
- v7000儲存硬碟離線如何恢復資料硬碟
- 【伺服器資料恢復】xen server儲存庫(sr)常見故障的資料恢復方案伺服器資料恢復Server
- Vsan資料恢復—Vsan分散式儲存資料恢復案例資料恢復分散式
- 【伺服器資料恢復】infortrend ESDS系列儲存資料恢復案例伺服器資料恢復
- VSAN儲存結構解析+儲存資料恢復案例資料恢復
- 如何儲存/恢復Java應用程式核心記憶體資料現場?Java記憶體
- 【儲存資料恢復】EMC某型號儲存raid5崩潰的資料恢復案例資料恢復AI
- 【儲存資料恢復】儲存上的raid5陣列崩潰的資料恢復案例資料恢復AI陣列
- 【北亞資料恢復】昆騰系列儲存伺服器StorNext檔案系統資料恢復案例資料恢復伺服器
- EMC儲存重灌系統丟失分割槽的資料恢復過程資料恢復
- 【資料庫資料恢復】EXT3檔案系統下MYSQL資料庫恢復案例資料庫資料恢復MySql
- 【伺服器資料恢復】EqualLogic儲存磁碟出現壞道的資料恢復案例伺服器資料恢復
- 【伺服器資料恢復】HP EVA系列儲存常見故障有哪些?如何恢復資料?伺服器資料恢復
- Activity資料儲存與恢復淺析