自研資料庫CynosDB儲存系統如何實現即時恢復

2022-09-15 03:09:10 字數 1187 閱讀 3215

下圖為cynosdb for postgresql的產品架構圖,cynosdb是乙個基於共享儲存、支援一寫多讀的資料庫集群。

cynosdb for postgresql產品架構圖

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。

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的回檔也就完成了。

阿里雲自研資料庫POLARDB全面開放售賣

阿里雲宣布自研雲原生資料庫polardb正式全面售賣。這個從誕生就備受矚目,基於計算和儲存分離的第三代雲計算架構下的商用關係型雲資料庫產品,實現了100 向下相容mysql 5.6的同時,支援單庫容量擴充套件至上百tb以及計算引擎能力及儲存能力的秒級擴充套件能力。隨著資料量的膨脹,越來越多企業將其i...

mysql user objects 資料庫系統表

access的系統表是msysobjects msysaccessobjects msysaces msysimexcolumns msysimexspecs msysobjects msysqueries msysrelationships sql server的系統表是sysobjects sq...

資料庫SQLiteOpenHelper自創

增 insert into 表名 欄位名,欄位名 values 刪 delete from 表名 where 字段 改 update 表名 set 字段 字段 where 條件 查 select form 表名 where 字段 可以更改為想要查詢的內容 建立資料庫 package com.bawe...