本文分享自華為雲社區《DTSE Tech Talk | 第43期:數倉數據可靠保證——物理細粒度備份恢復》,作者:華為雲社區精選。 大數據時代,數據對企業的重要性不言而喻,如果發生數據丟失或因為誤操作而造成數據丟失,將對企業的經營決策帶來不可估量的損失。本期《備份恢復全掌握,數倉數據更安全》的主題直 ...
本文分享自華為雲社區《DTSE Tech Talk | 第43期:數倉數據可靠保證——物理細粒度備份恢復》,作者:華為雲社區精選。
大數據時代,數據對企業的重要性不言而喻,如果發生數據丟失或因為誤操作而造成數據丟失,將對企業的經營決策帶來不可估量的損失。本期《備份恢復全掌握,數倉數據更安全》的主題直播中,我們邀請到華為雲EI DTSE技術佈道師李文鑫,針對GaussDB(DWS) 物理細粒度備份恢復與開發者和伙伴朋友們展開交流互動。
GaussDB(DWS)的備份恢復工具
為了應對故障場景,防止數據丟失,GaussDB(DWS)提供了兩道防線,以保障數倉安全,分別是:高可靠技術和備份恢復技術。高可靠技術是第一道防線,備份恢復技術是最後一道防線。
GaussDB(DWS)的備份恢復工具—Roach,提供了備份、恢復、容災功能。備份恢復部分包括集群級備份、集群級恢復、物理細粒度備份、物理細粒度恢復、邏輯備份和恢復;容災部分包括雙集群容災、雙集群遷移、細粒度容災。
為什麼需要使用物理細粒度備份恢復?
假設我們誤刪了一張表,想通過備份將這張表恢復出來,如果我們採用集群級恢復的方式,那麼就需要對整個集群的數據進行恢復,這顯然不是我們想要的。而如果採用細粒度恢復的方式,我們就可以精確的只將這張表恢復出來。
類似這樣的場景有很多,實際使用中集群級的故障並非是一個高概率的事情,我們細粒度恢復一張表或一個schema才是更加實際的需求。
物理細粒度備份恢復優勢
節省空間
相比於集群級備份海量的數據備份恢復,物理細粒度備份針對重點文件進行備份,省去了無關數據的備份,節約大量的空間
節約時間
走物理文件拷貝的流程,相對於邏輯備份更加簡單高效
精準恢復
恢復想要恢復的數據,無需對整個集群數據進行恢復
▲ 物理細粒度備份恢復支持的功能(正式商用版本8.2.1)
物理細粒度備份恢復的基本流程
由於物理細粒度備份採用了線上恢復的方式,創建了一張新表,那麼就需要知道原表的一個表定義,那麼在備份的時候就需要將表的定義備份上,這個任務是通過調用GaussDB(DWS) gs_dump工具完成。
確定了表定義就要拷貝表對應的相關文件,比如列存表的cudesc表、存在可變長欄位的toast表等,只有把輔助表的信息也記錄下來,才能保證恢復之後這張表是可用的,物理細粒度備份採用Map文件對錶關係進行組織,對錶所有的關聯表及文件進行統一收集記錄,備份和恢復時根據map文件去做表文件的備份和恢復。
最後就是物理文件的拷貝,Roach對物理文件的拷貝是通過壓縮的方式,然後保存在一個rch文件中,並生成fine_file_list文件,記錄每個rch文件壓縮了哪些物理文件。備份時備份了表定義、表相關文件、表物理文件三個信息之後,我們便可以進行細粒度單表的恢復。
▲ 物理細粒度備份流程
物理細粒度恢復主要是把一張表或多張表恢復到目標集群中,並保證恢復後的表能夠正常提供服務。物理細粒度恢復同樣採用的是線上恢復的方式,恢復方法的核心思想是在當前的集群中創建出與原表定義完全相同的一張目標表,再把原表和目標表相關的物理文件進行替換。由於替換之後的物理文件保存了舊的事務信息,因此完成數據恢復後需要對目標表進行數據清洗,至此,所有的恢復工作完成。
▲ 物理細粒度恢復流程
物理細粒度備份恢復的使用實踐
物理細粒度備份恢復是通過python腳本拉起gs_roach工具,並指定特定的參數是實現的。特有的命令函參數包括:
--physical-fine-grained 【物理細粒度標誌參數】 --dbname <資料庫名稱> 【例如:postgres】 --schema-list <文件名稱> 【要備份的schema列表,在指定的文件中每個schema一行】 --clean 【恢復到同名原表時使用該參數清理原表】 --table-list <文件名稱> 【要恢復的原表名稱,保存在文件中】 --restore-target-list <文件名稱> 【要恢復的目標表名稱】
物理細粒度備份恢復可基於命令行參數實現,或者從管控面下發備份恢復任務。以命令行下發備份恢復任務如下:
- 物理細粒度備份
- 物理細粒度多表恢復
從管控面下發備份恢復任務需要打開細粒度開關,在指定集群的集群管理界面進行備份恢復任務:
點擊鏈接觀看直播完整版回放,瞭解詳細信息。