GaussDB(DWS):非侵入式備份及其在NBU上的應用


摘要:Netbackup軟件必須要有該集群所支持的OS的安裝包,一種新的非侵入式備份架構呼之欲出。

1. 通用的備份方案介紹

除Netbackup深度定制的廠商外,通常數據庫廠商都按XBSA接口來實現NBU備份。首先在集群內每個節點安裝NBU客戶端,通過XBSA發命令至本地NBU客戶端,然后NBU客戶端與遠端服務器上的NBU服務端程序通信,將數據寫入掛載於遠端的磁帶或磁盤設備。早期的GaussDB(DWS)便是采用如此方式,應用於線下場景。下圖展示了這個備份架構原理。

如上圖,GaussDB的備份工具Roach,在每個節點都啟動一至多個Roach agent進程,用於讀取本節點的GaussDB數據,並將其存入緩存buffer。然后調用XBSA接口,將緩存數據轉發給NBU處理。

不難看出,該架構的特點就是Netbackup第三方軟件需要侵入式部署到我們的集群內,備份進程也要使用安裝NBU Client時一起提供的libxbsa64.so動態庫才能使用XBSA接口。這樣就隱含了一個前提:Netbackup軟件必須要有該集群所支持的OS的安裝包。但是,雲上環境基本都是歐拉OS,或者鯤鵬服務器,目前針對這些系統並沒有Netbackup軟件的安裝包,這個前提變得不可獲得。更進一步,適配更多第三方廠商的備份協議時,當前架構就要求第三方廠商必須支持歐拉OS、鯤鵬等版本,增加了各種組合的復雜性,不利於生態拓展。於是一種新的非侵入式備份架構呼之欲出。

2. 非侵入式備份架構介紹

非侵入式架構下,第三方廠商的客戶端軟件不部署在GaussDB集群內。同時,GaussDB開發一個新插件,部署於遠端備份服務器上,負責與集群內的Roach工具進行通信,於是架構變為下圖所示:

這里說的新插件就是Roach client組件,用戶使用前需要提前在備份服務器上部署該組件。和Roach工具一樣,該組件也不允許以root用戶部署,應當新建一個普通用戶,在該用戶下部署。

圖中NBU只是一種示例,其它第三方軟件對接時原理也是相同的。

展開一點來說,集群內每個節點都有Roach agent進程負責本節點一至多個DN實例的數據備份,該進程會根據DN個數fork出多個子進程,每個Roach agent子進程負責一個DN。備份出來的數據會轉發給遠端備份服務器的Roach client進程,該進程內部又會根據DN個數fork出多個子進程,每個子進程負責與一個DN(亦對應一個Roach agent)通信。這里不能創建為線程是因為XBSA本身限制,每個進程才能獨占一份NBU鏈接。即有如下映射關系圖:

從性能角度考慮,需要根據一定比例配備多個NBU media server服務器。比如GaussDB集群有200個節點,每4個DN對應一個備份盤或磁帶,每10個GaussDB節點配備一台NBU media server,則共需20台media服務器。示意圖如下:

3. 雲上非侵入式NBU備份的使用

用戶可通過DWS管控面發起NBU備份操作,發起之前需按照非侵入式方式提前部署好NBU環境和Roach client組件。

首先,可在插件下載界面提前down下來Roach client組件包(OS版本需要與NBU media server的系統相同):

然后配置快照策略,圖中的備份服務器即是NBU media server。

接下來就可以創建快照了:

創建快照成功后,后期即可使用該快照來恢復集群。

本文分享自華為雲社區《非侵入式備份及其在NBU上的應用》,原文作者:dws。

 

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


免責聲明!

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



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