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


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

1. 摘要

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

2. 分盤存儲原理

在雙集群容災設計中,主集群的角色是只做備份,備集群的角色是只做恢復。為了實現主備數據的同步,需要將備份集以.rch的格式進行數據拷貝。

如上圖所示,在優化前,主集群會將壓縮在roachbackup中的數據全部scp到備集群的roachbackup中,這樣的存儲方式,會對備集群磁盤空間造成非常大的負擔。

在優化后,主集群會將壓縮數據scp到備集群實例目錄中的roachbackup文件夾,然后通過軟鏈接的方式,備份目錄中不同的DN和CN鏈接到了roachbackup文件夾。由於CN和DN分布在不同的磁盤上,同時軟連接使得roach看到的路徑和以前一樣,這樣就實現了數據分盤存放的目的。

3. 分盤存儲步驟

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

比如/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,分別代表着日志/行存數據/列存數據

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

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

第四步:只有全量備份和全量恢復時必須這樣做,增量備份恢復可選。按照現在的設計邏輯,全量和增量備份都建立了軟鏈接。

第五步:恢復完成后,備集群刪除創建的符號鏈接、各實例目錄下的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 。

 

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM