分盤存儲:實現數據庫備集羣備份文件分散存儲

摘要:爲了解決磁盤存儲空間限制的問題,提出分盤存儲手段,從而實現備集羣備份文件分散存儲的目的。

1. 摘要

雙集羣容災場景下,須要將主集羣中的數據備份到備集羣。然而,隨着主集羣數據量的增大,備集羣不存在一個單獨的大容量磁盤用於存放主集羣發來的備份集,或存放備份集的盤符空間不足以存儲主集羣發來的全部備份文件。可是,容災場景中仍然要能支持雙集羣的備份恢復。所以,爲了解決磁盤存儲空間限制的問題,提出分盤存儲手段,從而實現備集羣備份文件分散存儲的目的。node

2. 分盤存儲原理

在雙集羣容災設計中,主集羣的角色是隻作備份,備集羣的角色是隻作恢復。爲了實現主備數據的同步,須要將備份集以.rch的格式進行數據拷貝。工具

如上圖所示,在優化前,主集羣會將壓縮在roachbackup中的數據所有scp到備集羣的roachbackup中,這樣的存儲方式,會對備集羣磁盤空間形成很是大的負擔。測試

在優化後,主集羣會將壓縮數據scp到備集羣實例目錄中的roachbackup文件夾,而後經過軟連接的方式,備份目錄中不一樣的DN和CN連接到了roachbackup文件夾。因爲CN和DN分佈在不一樣的磁盤上,同時軟鏈接使得roach看到的路徑和之前同樣,這樣就實現了數據分盤存放的目的。優化

3. 分盤存儲步驟

第一步:在備集羣CN和DN實例目錄下建立文件夾roachbackup,主集羣根據config.ini建立備集羣的media目錄下的目錄連接:url

好比/data1/roach3/mediadata/roach/20210129_181026/ecs-env-2998/dn_6001_6002爲一個符號連接,此符號連接能夠指向備集羣roachbackup目錄/data1/ha_install_3/data1/roachbackup/20210129_091422/master1目錄。其中,master1子目錄爲archive/data/data_colstore,分別表明着日誌/行存數據/列存數據spa

第二步:備集羣恢復前clean集羣時,跳過各實例目錄的roachbackup文件夾。.net

第三步:在備份目錄和實例目錄不一樣的backupkey文件夾下,有不一樣的節點目錄,在節點目錄下有cn和dn目錄,將備份目錄下的cn和dn軟鏈接到實例目錄。設計

第四步:只有全量備份和全量恢復時必須這樣作,增量備份恢復可選。按照如今的設計邏輯,全量和增量備份都創建了軟連接。3d

第五步:恢復完成後,備集羣刪除建立的符號連接、各實例目錄下的roachbackup文件夾,即恢復即刪。對於主集羣roachbackup目錄,邊傳輸數據,邊刪除數據,即傳輸即刪。日誌

4. 分盤存儲結果

如上圖所示,對於cn和dn目錄,都經過軟鏈接方式鏈接到了roachbackup對應的data_cn,master1,dummy1。經過軟鏈接方式,roach在scp時,覺得是傳輸到了一個磁盤上,但實際上寫到了軟鏈接對應的其餘盤上,這樣的話,數據也就實現了存放在不一樣磁盤上的目的。

5. 軟鏈接含義

分盤存儲中,實現的基礎就是軟鏈接的創建。那麼,軟鏈接是什麼意思呢?

軟連接有着本身的inode號以及用戶數據塊。只不過用戶數據塊中存放的內容是另外一文件的路徑名的指向。

如上圖所示,在備集羣恢復dn_6001_6002數據時,其實是去/data1/ha_install_3/data1/roachbackup/20210129_091422/master1目錄中去讀取真正的數據,從而完成數據訪問,最終實現備集羣備份集的恢復功能。

6. 結論

隨着數據倉庫業務的發展以及客戶數據量的增大,這就要求雙集羣容災須要不斷的迭代,深刻挖掘客戶需求是研發的第一性原則。

雙集羣容災任務存在不少的策略,如分盤存儲,生命週期清理,斷點續備份和斷點續恢復,主備切換。繼往開來,雙集羣新的特性仍需開發,如自動化測試工具、過程監控工具和雲化等。將來可期,實現產品生態豐富的目的始終是研發的第一輩子產力。

本文分享自華爲雲社區《GaussDB(DWS)備份容災之分盤存儲》,原文做者:zxy_db 。

 

點擊關注,第一時間瞭解華爲雲新鮮技術~

相關文章
相關標籤/搜索