大數據“復活”記
766
2025-04-01
1? ? 需求介紹
GaussDB(DWS)的實例在運行過程中難免發生故障,引起實例錯誤或無法啟動,此時就需要進行備機重建工作。備機重建功能主要目的是修復實例單點故障,此外,還可用于集群安裝的初始化、集群擴容的元數據同步、節點故障后的溫備替換等等場景。本文將介紹備機重建各種方法的實現機制,并結合應用場景分析,以及對新增參數的使用建議,以期獲得最佳應用效果。
2? ? 設計方案
2.1 功能分類
備機重建按照實現方式不同分為:全量重建和增量重建。
備機重建需要在待修復主機上運行gs_ctl build工具。在備機重建過程中,均需要和主DN建立連接進行數據的交互訪問。在gs_ctl工具的命令行參數中通過–b=mode參數,可以指定重建DN備機的模式。目前mode支持的取值包括以下四種:
full:全量重建,通過獲取主備之間全量鏡像差異的方式重新同步DN主機的數據目錄。
fullcleanup:全量重建,通過全量鏡像的方式重新同步DN主機的數據目錄。與full模式區別為:同步前需要清理DN備機的數據目錄,保留配置文件。主機將自己的數據目錄除了配置文件外,全部發給備機。
incremental:增量重建,通過解析WAL日志獲取主備DN差異的數據進行增量修復備DN。
auto(不指定-b):先增量重建,增量重建失敗后進行全量重建。
實際生產環境中,具體使用哪種方式,就需要看需求與應用場景所定。
2.2 應用場景
備機重建按照功能場景不同分為:DN Build DN、CN build CN、CN Build DN。各Build的應用場景的特點如下:
編號
場景
使用方式
特點
分析
可選模式
1
安裝
DN build DN
初始化數據總量小。
無性能和備份需求;
有約束,無GTM支撐,直接拉起DN進行Build。
full
fullcleanup
2
擴容
CN build CN
CN build DN
DN build DN
主機上元數據小文件總量多。
備機從無到有,無歷史數據。
無備份需求;
有小文件性能需求;
有約束,CN支持一對多的Build,擴容過程中鎖集群。
full
fullcleanup
3
溫備替換
DN build DN
數據總量比較多。
備機從無到有。
無備份需求
有性能需求
有約束,溫備過程中鎖集群
full
fullcleanup
4
修復
DN build DN
通常,備機上有相當多的數據文件,而且在備機損壞較短時間內,主備之間存在相當多的相同文件。
有備份需求
有性能需求
incremental
full
fullcleanup
表1 Build的應用場景
選擇何種修復方式最優,需要理解該模式的工作原理,并根據應用場景合理地設置相關參數。
3? ? 實現過程
3.1 fullcleanup mode:基于推送方式
fullcleanup mode是一種推送模式,在該模式下,由主機來控制數據流程(我給啥你接啥),在不關心備機損壞程度和范圍的情況下,需要主機將自己的數據目錄配置文件外的全部數據傳送給備機,重建后啟動備機。
其主要工作過程如圖1所示:
圖1 fullcleanup build工作過程
fullcleanup mode build的特點很明顯,備機將得到徹底重建。但缺點也很明顯:主機需要Copy實例上全部的數據和XLOG日志文件,占用較高的網絡傳輸帶寬,對運行中的業務有一定影響。備機沒有對修復前數據進行原子化管理,過程中一旦失敗將無法恢復到原備機。如果全量Build過程中由于偶發網絡等原因故障失敗,將前功盡棄,再次Build數據需要從頭再來。
所以該方式是最保守的最后選項,是在其它重建方式均無效的時候的一種選擇。
3.2 full mode:基于文件校驗獲取差異的拉取方式
full mode是一種拉取模式,在該模式下,由備機來控制數據流程(我需要啥拿啥),僅需要補齊主備之間的差異數據。但前提是備機需要知曉自己與主機差異。full mode是直接從文件比較進行切入,主、備機可以同時多線程(并行、并發,提升性能)在各自本地上對數據目錄文件進行遍歷,獲知文件有無、大小、文件校驗計算等信息;通過這些信息,不斷對計算結果File Map List進行合并篩選,獲得最小的差異文件集合,減少數據/文件的拷貝數量。備機既可以僅備份備機的差異文件作為備份集(滿足可靠性),又可以僅拉取主機的差異文件來更新(提升性能);備機可以采用多線程(并發,提升性能)同時從主機拉取文件。
其主要工作過程如圖2所示:
圖2 full build工作過程
full mode build的特點是充分利用備機已有的文件,減少數據同步的數量,可以方便地進行備份和恢復、和并行控制。但需要花費一定時間的本地IO和計算為代價。與fullcleanup mode相比較在無資源瓶頸條件下通常速度更快(可獲得數倍的提升),可靠性上更安全,是全量build的首選。
3.3 incremental mode:基于Xlog分析獲取差異的拉取方式
incremental mode是另外一種拉取方式。適用于主備雙主等因日志造成的不一致場景。增量重建是一種以主DN文件和備DN的WAL日志為基準,按照多退少補的原則對備DN文件和文件塊進行修復。與全量重建相比較,拷貝的粒度、數據量和WAL日志量都更少,代價更小。
其主要工作過程如圖3所示:
圖3 incremental build工作過程
incremental mode build只適用于主備雙主等因日志造成的不一致場景。備機數據文件損壞、數據目錄丟失等故障通過增量重建的方式無法修復,此時可通過全量重建的方式重新修復備機。
4? ? 思考總結
隨著備機重建功能的性能提升和可靠性的增強,build新增了部分參數,在使用時候值得了解和注意。
4.1 -T THREAD-NUMBER
適用于拉取方式的full和incremental模式。其功能是在備機側指定與主機連接個數,用于多線程并發進行計算和與文件拉取。
通常情況下默認值為4已可獲得較好的性能,在資源允許的情況下,建議使用更高的線程數。但需注意的是增大線程數目可以提升Build的性能,縮短其重建時間,但相應的也增加了網絡連接、CPU、和網絡IO的消耗,在使用時候需要考慮資源狀況,合適設置。
4.2 -u
適用于支持原子化功能的full和incremental模式。其功能是Build過程中將不進行原子化恢復和備份,適合于空間不足或無需備份的需要場景中。
Incremental build默認是原子化,過程中嚴格進行原子化恢復和備份,過程中出錯可恢復,排除錯誤后,可再次調用重入。由于Full Build的涉及的數據文件量大,默認無原子化,但會嘗試進行原子化恢復,忽略恢復結果成敗,僅在備機拉取主機上的文件占其總量20%內進行備份。在使用時最好明確指出需要或者不需要原子化功能。
4.3 -B --backupdir=DIR
適用于支持原子化功能的full和incremental模式。其功能是Build過程中將從指定的路徑下進行備份集的恢復和備份。適合于強高可靠需求場景,在Build成功之前可保持備份的原子化,避免原始備份丟失。
需要注意的是,用戶指定備份集路徑的磁盤剩余空間應大于DN實例數據目錄大小。且備份路徑下保持空白或者是本節點的數據集,無關數據將會造成備份集失效,重新生成的備份集會讓原始數據副本有丟失的風險。除pg_rewind_bak路徑外,用戶指定備份集路徑的應與備機實例工作路徑隔離。
想了解GuassDB(DWS)更多信息,歡迎微信搜索“GaussDB DWS”關注微信公眾號,和您分享最新最全的PB級數倉黑科技~
EI企業智能 Gauss AP 數據倉庫服務 GaussDB(DWS)
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。