greenplum备份和恢复

本文详细介绍了Greenplum数据库的备份和恢复机制,包括使用pg_dump和gp_dump进行全库或部分备份,以及如何通过pg_restore和gp_restore进行数据恢复。Greenplum的备份工具支持并行备份,提高了备份效率,但不支持增量备份,并在备份过程中可能影响DML操作。此外,文章还提到备份文件的格式和恢复选项,以及在不同场景下的使用策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

GREENPLUM和许多关系型数据库一样从两个方面实现数据库数据的保护。一方面是通过数据库的备份恢复,实现数据仓库数据的保护。另一方面是通过冗余实现系统的容错,为数据仓库系统提供高可用性。
这部分先介绍数据库的备份。GREENPLUM为数据库的备份提供了两种工具,一种是pg_dump,另一种是gp_dump。pg_dump是从postgre继承过来的工具,它只能通过MASTER节点采用串行方式备份数据库,可以本地备份,也可以远程备份。其具体的参数说明可以通过执行
pg_dump --help获取
用法:
pg_dump [OPTION]... [DBNAME]

常用选项:
-f, --file=FILENAME 备份文件的名称
-F, --format=c|t|p 输出文件的格式,c表示二进制文件,t表示tar,p表示文本
-i, --ignore-version 当服务版本不匹配时,忽略服务版本。
-v, --verbose verbose模式
-Z, --compress=0-9 采用压缩模式存放备份结果,并指定压缩级别
--help 显示帮助
--version 显示版本,然后退出

控制输出内容的选项
-a, --data-only 备份中只含有数据,而没有schema信息。
-b, --blobs 在备份中包含大对象。
-c, --clean 在创建前,删除schema
-C, --create 在备份文件中含有创建数据库的命令。
-d, --inserts 备份数据使用insert命令模式
-D, --column-inserts 备份数据使用insert命令模式,并提供列名。
-E, --encoding=ENCODING 备份文件使用的字符集
-n, --schema=SCHEMA 只备份特定的SCHEMA
-N, --exclude-schema=SCHEMA 备份中排除特定的SCHEMA
-o, --oids 在备份中包含oid
-O, --no-owner 如果采用文本格式备份,越过对象所有者的还原信息。
-s, --schema-only 只备份SCHEMA的信息,而不备份它们的数据。
-S, --superuser=NAME 如果使用文本格式,指定超级用户的名称

-t, --table=TABLE 只备份特定的表,视图,或者序列
-T, --exclude-table=TABLE 备份中排除特定的表,视图或者序列。
-x, --no-privileges 不备份权限(grant/revoke)
--disable-dollar-quoting 只使用表中SQL的"",不需使用$$处理文本分割

--use-set-session-authorization 使用SESSION AUTHORIZATION命令替代
ALTER OWNER commands设置所有权
--gp-syntax 备份中的SQL使用GREENPLUM句法,默认选项
--no-gp-syntax 备份中的SQL不使用GREENPLUM句法

连接选项
-h, --host=HOSTNAME 数据库主机名,或者socket目录
-p, --port=PORT 数据库服务端口
-U, --username=NAME 指定用户名
-W, --password 强制口令提示。

比如例子
pg_dump -f /home/gpadmin/backup/sales_bak -v -F c -p 5432 -h mdw -C -n sales_history sales_history
提供master的连接信息,把数据库sales_history的schema sales_history备份到/home/gpadmin/backup/sals_bak中,并含有建库句法。
这种备份方式实际上是一种逻辑备份方式,而非ORACLE RMAN那样的物理备份。它有两个主要的限制。一方面备份速度受MASTER节点数据吞吐能力的限制。另外,MASTER用来存放备份文件的空间必须足够大,能够存放所有segment节点的备份数据。所以这种方式更适合用在数据迁移的场景中.比如把postgre数据库(或者netezza)的数据迁移到greenplum中,或者在不同架构的GREENPLUM数据库间进行数据迁移,比如4节点的服务的数据,向8节点的服务迁移。
对应pg_dump备份的结果,如果数据库出现故障,或者要进行数据移植,需要进行数据恢复,要使用工具pg_restore。具体参数说明可以通过pg_restore --help获取。
具体用法:
pg_restore [OPTION]... [FILE]

常见选项:
-d, --dbname=NAME 指定连接数据库的名称。
-f, --file=FILENAME 输出文件名称
-F, --format=c|t 指定备份文件格式,c表示自定义,t表示tar
-i, --ignore-version 如果版本不匹配,忽略版本
-l, --list 打印归档TOC的汇总信息
-v, --verbose 使用verbose模式
--help 显示帮助,然后退出
--version 显示版本,然后退出

控制还原的选项
-a, --data-only 只还原数据
-c, --clean 在创建之前删除schema
-C, --create 创建目标数据库
-I, --index=NAME 还原索引
-L, --use-list=FILENAME 按照文件指定顺序还原表
-n, --schema=NAME 只还原特定SCHEMA的对象
-O, --no-owner 跳过特定所有者对象的还原
-P, --function='NAME(args)' 还原特定的函数,函数的名字必须与TOC中的一致,并且使用单引号括起。

-s, --schema-only 只还原SCHEMA,不还原相关数据。
-t, --table=NAME 只还原特定的表
-x, --no-privileges 跳过特定权限的还原 (grant/revoke)
--use-set-session-authorization 使用SESSION AUTHORIZATION替代 ALTER OWNER TO命令
--no-data-for-failed-tables 不还原创建表失败的数据
-1, --single-transaction 还原作为一个单一事务进行。

连接选项:
-h, --host=HOSTNAME 指定数据库服务的主机名或者socket目录
-p, --port=PORT 数据库服务端口号
-U, --username=NAME 指定连接的数据库用户
-W, --password 强制口令提示
-e, --exit-on-error 遇到错误退出,默认模式是继续。

用刚才的备份为列,我们先删除sales表
sales_history=> select count(*) from sales;
count
--------
918843
(1 row)

sales_history=> select count(*) from sales

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值