【摘要】為了解決磁碟儲存空間限制的問題,提出分盤儲存手段,從而實現備叢集備份檔案分散儲存的目的。
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軟連線到例項目錄。
第四步:只有全量備份和全量恢復時必須這樣做,增量備份恢復可選。按照現在的設計邏輯,全量和增量備份都建立了軟連結。
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. 結論隨著資料倉庫業務的發展以及客戶資料量的增大,這就要求雙叢集容災需要不斷的迭代,深入挖掘客戶需求是研發的第一性原則。
雙叢集容災任務存在很多的策略,如分盤儲存,生命週期清理,斷點續備份和斷點續恢復,主備切換。繼往開來,雙叢集新的特性仍需開發,如自動化測試工具、過程監控工具和雲化等。未來可期,實現產品生態豐富的目的始終是研發的第一生產力。