編者按:
最近,社群的小夥伴一直在問gpbackup的問題,這幾天便花了點時間看了看原始碼,整理一個gpbackup的主題文章,希望能夠幫到大家。
gpbackup 的分享主題計劃分成3篇文章:
gpbackup簡介與原始碼編譯
gpbackup詳細使用方法
gprestore詳細使用方法及總結
上篇文章,我們首先來介紹一下,並從github上拉取原始碼進行編譯。
PART。01
gpbackup 簡介
Greenplum是MPP架構的分析型資料庫,其核心原始碼從2015年的v4。3版本開始開源至今,已經有6年多的時間了,起初,開源版本的並行備份恢復工具叫和。由於這個工具存在一些已知的缺陷,比如單獨備份一個大壓縮包導致單表恢復操作時間過長等,官方目前已經開發了替代工具和並進行了開源,GitHub地址為:https://github。com/greenplum-db/gpbackup 。
已知gpbackup和gprestore適配的Greenplum版本如下:
參考自社群大牛陳淼的《Greenplum-Database管理員指南6。2》,在此對作者的分享表示感謝,大家也可以學習該文件的 “並行備份gpbackup與gprestore” 部分,瞭解更多的相關內容。
GPDB 4。3。22及以後版本
GPDB 5。5。0及以後版本
GPDB 6。0。0及以後版本
這裡對各個版本的備份工具做一下總結:
GPDB 4。x/5。x的某些版本(具體版本參考上面),可以同時使用gpcrondump和gpbackup兩種工具;
GPDB 6。x版本開始,gpcrondump已經去掉了,只能使用gpbackup工具;
GPDB 6。x版本開始,官方版本的gpbackup提供單獨的安裝包,需要自行從vmware tanzu下載使用;開源版本的gpbackup可以從GitHub Release(https://github。com/greenplum-db/gpbackup/releases)上下載釋出包,或者自己進行原始碼編譯。
PART。02
gpbackup 原始碼編譯
gpbackup是基於Golang寫的,已經有很多網友在網上做了原始碼分析,這裡再絮叨一下原始碼編譯的過程吧,方便大家有一個整體的認識。
2。1 Golang環境配置
因為gpbackup是基於golang開發的,所以首先要配置golang基礎開發環境,這裡大家要注意,因為golang可以直接編譯跨平臺的包,所以你可以選擇在Mac上交叉編譯Linux系統用的包,只需要指定不同的編譯標籤(編譯部分再詳細介紹)。
1)安裝Golang
大家首先從 https://golang。google。cn/dl/ 下載準備用於編譯gpbackup的作業系統對應的軟體包,整個Linux的安裝包是通用的,只需要分清楚CPU架構是ARM還是X86即可。
下載完成後,需要自己進行安裝,通常安裝在對應作業系統的預設軟體位置,比如這裡我安裝在。這個路徑,就是所謂的GOROOT。
安裝完成後,需要配置三個環境變數:
環境變數配置完成後,在命令列執行如下命令,如果顯示正常,說明配置有效:
2)在GOPATH下建立相應的資料夾
2。2 gpbackup 原始碼下載編譯
1)下載原始碼
原始碼的下載方式有兩種,第一種是參考官方的指導使用go get,第二種是直接git把程式碼拉下來。
第一種:執行如下命令下載原始碼:
這種方式拉下來的原始碼,我這邊的位置有點奇怪,僅供參考:
第二種:執行如下命令下載原始碼:
以上兩種方式可以任選一種,我們習慣性的使用git去clone原始碼,並且這種方式可以明確的獲知原始碼的下載位置,我個人感覺更好一些;另外雖然在golang裡面,使用go mod方式管理依賴時,不再需要GOPATH,但是在gpbackup裡,GOPATH這個環境變數是必選項,不可以省略,因為最終打包好的檔案會放到$GOPATH/bin下面。
2)編譯
交叉編譯的選項如下:
最後你從$GOPATH/bin/下面會找到如下三個包:
便已完成後,執行如下命令安裝即可(或者手工copy):
PART。03
gpbackup 使用示例
在本節的最後部分,透過一個簡單的例子,帶大家看一下如何使用gpbackup。
直接執行命令 :
因授權導致的錯誤
如果你在執行備份命令時出現以下錯誤,可能跟檔案中的訪問授權有關:
從以上錯誤中可以看出,gpbackup在連線到資料庫時,採用的是pqx的connection url的方式,該報錯是因為pg_hba。conf檔案中對allinone這個主機的gpadmin使用者訪問做了密碼限制,可以把密碼限制放開,改為trust即可。
如果生產必須要求所有的IP(除了socket外)均需要密碼驗證,那麼請在執行gpbackup之前配置環境變數,如下:
gpbackup支援從以下環境變數中取值:
PGHOST
PGPORT
PGUSER
PGPASSWORD
下一篇,我們將介紹gpbackup詳細使用方法。
作者簡介
苑澤福,Greenplum中文社群專家
曾供職於鼎興達、瀚高,擁有豐富的資料庫開發運維經驗,近年來一直專注於Greenplum 資料庫,完成了多個基於Greenplum的資料平臺的落地