
编者按:最近,社区的小伙伴一直在问gpbackup的问题,这几天便花了点时间看了看源码,整理一个gpbackup的主题文章,希望能够帮到大家。
gpbackup简介与源码编译 gpbackup详细使用方法 gprestore详细使用方法及总结
gpbackup,并从github上拉取源码进行编译。
PART.01
gpbackup 简介

Greenplum是MPP架构的分析型数据库,其核心源码从2015年的v4.3版本开始开源至今,已经有6年多的时间了,起初,开源版本的并行备份恢复工具叫gpcrondump
和gpdbrestore
。由于这个工具存在一些已知的缺陷,比如单独备份一个大压缩包导致单表恢复操作时间过长等,官方目前已经开发了替代工具gpbackup
和gprestore
并进行了开源,GitHub地址为:https://github.com/greenplum-db/gpbackup 。
参考自社区大牛陈淼的《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 源码编译

2.1 Golang环境配置

/usr/local/go。这个路径,就是所谓的GOROOT。
# .zshrc add for golangexport GOROOT=/usr/local/goexport GOPATH=/home/chris/goexport PATH=$PATH:$GOROOT/bin:$GOPATH/bin
$ source ~/.zshrc$ go versiongo version go1.17.4 linux/amd64
2)在GOPATH下创建相应的文件夹
$ mkdir -p go/src go/bin go/pkg
2.2 gpbackup 源代码下载编译

$ go get github.com/greenplum-db/gpbackup/...# 注意这里的三个点不能省略,三个点意思是将gpbackup下的所有子目录都做完整下载
$ pwd/Users/chris/Go/pkg/mod/github.com/greenplum-db/gpbackup@v0.0.0-20211208190753-99504926b0d3
$ git clone https://github.com/greenplum-db/gpbackup.git
2)编译
$ make depend$ make build# 如果没有定义GOPATH,会报如下错误:Makefile:4: *** Environment variable GOPATH is not set. Stop.
make build_linux # Mac上交叉编译Linux包
gpbackupgprestoregpbackup_helper
$ make installcp /home/gpadmin/go//bin/gpbackup /home/gpadmin/go//bin/gprestore /usr/local/greenplum-db-6.15.0/bin
PART.03
gpbackup 使用示例

gpbackup --dbname postgres:
$ ./gpbackup --dbname postgres20211225:20:52:26 gpbackup:gpadmin:allinone:026818-[INFO]:-gpbackup version = 1.23.0+dev.5.g995049220211225:20:52:26 gpbackup:gpadmin:allinone:026818-[INFO]:-Greenplum Database Version = 6.15.0 build commit:4e6288c9e9fca634b007a978fba3ce25aae26aed Open Source20211225:20:52:26 gpbackup:gpadmin:allinone:026818-[INFO]:-Starting backup of database postgres20211225:20:52:26 gpbackup:gpadmin:allinone:026818-[INFO]:-Backup Timestamp = 2021122520522620211225:20:52:26 gpbackup:gpadmin:allinone:026818-[INFO]:-Backup Database = postgres20211225:20:52:26 gpbackup:gpadmin:allinone:026818-[INFO]:-Gathering table state information20211225:20:52:26 gpbackup:gpadmin:allinone:026818-[INFO]:-Acquiring ACCESS SHARE locks on tablesLocks acquired: 6 / 6 [================================================================] 100.00% 0s20211225:20:52:26 gpbackup:gpadmin:allinone:026818-[INFO]:-Gathering additional table metadata20211225:20:52:26 gpbackup:gpadmin:allinone:026818-[INFO]:-Getting partition definitions20211225:20:52:26 gpbackup:gpadmin:allinone:026818-[INFO]:-Getting storage information20211225:20:52:26 gpbackup:gpadmin:allinone:026818-[INFO]:-Getting child partitions with altered schema20211225:20:52:26 gpbackup:gpadmin:allinone:026818-[INFO]:-Metadata will be written to /data/gpdata/master/gpdb-1/backups/20211225/20211225205226/gpbackup_20211225205226_metadata.sql20211225:20:52:26 gpbackup:gpadmin:allinone:026818-[INFO]:-Writing global database metadata20211225:20:52:26 gpbackup:gpadmin:allinone:026818-[INFO]:-Global database metadata backup complete20211225:20:52:26 gpbackup:gpadmin:allinone:026818-[INFO]:-Writing pre-data metadata20211225:20:52:26 gpbackup:gpadmin:allinone:026818-[INFO]:-Pre-data metadata metadata backup complete20211225:20:52:26 gpbackup:gpadmin:allinone:026818-[INFO]:-Writing post-data metadata20211225:20:52:26 gpbackup:gpadmin:allinone:026818-[INFO]:-Post-data metadata backup complete20211225:20:52:26 gpbackup:gpadmin:allinone:026818-[INFO]:-Writing data to fileTables backed up: 6 / 6 [==============================================================] 100.00% 0s20211225:20:52:26 gpbackup:gpadmin:allinone:026818-[INFO]:-Data backup complete20211225:20:52:27 gpbackup:gpadmin:allinone:026818-[INFO]:-Found neither /usr/local/greenplum-db-6.15.0/bin/gp_email_contacts.yaml nor /home/gpadmin/gp_email_contacts.yaml20211225:20:52:27 gpbackup:gpadmin:allinone:026818-[INFO]:-Email containing gpbackup report /data/gpdata/master/gpdb-1/backups/20211225/20211225205226/gpbackup_20211225205226_report will not be sent20211225:20:52:27 gpbackup:gpadmin:allinone:026818-[INFO]:-Backup completed successfully
pg_hba.conf文件中的访问授权有关:
$ gpbackup --dbname postgres20211225:20:50:23 gpbackup:gpadmin:allinone:026386-[INFO]:-gpbackup version = 1.23.0+dev.5.g995049220211225:20:50:23 gpbackup:gpadmin:allinone:026386-[CRITICAL]:-failed to connect to `host=allinone user=gpadmin database=postgres`: server error (FATAL: password authentication failed for user "gpadmin" (SQLSTATE 28P01)) (allinone:5432)
PGPASSWORD,如下:
$ export PGPASSWORD=passwd123$ gpbackup --dbname postgres
PGHOST PGPORT PGUSER PGPASSWORD
作者简介
苑泽福,Greenplum中文社区专家
曾供职于鼎兴达、瀚高,拥有丰富的数据库开发运维经验,近年来一直专注于Greenplum 数据库,完成了多个基于Greenplum的数据平台的落地

来一波 “在看”、“分享”和 “赞” 吧!文章转载自Greenplum中文社区,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




