版本:Greenplum 4.3.6.2
Linux:OS 6.7
-------------------
测试备份恢复:ok
环境准备
创建数据库:
create user pay with password 'pay';
CREATE DATABASE pay WITH OWNER = pay ENCODING = 'UTF8'
导入测试数据
psql -d pay -f payment.sql
加入本地认证
more pg_hba.conf
# "local" is for Unix domain socket connections only
local all all trust
# IPv4 local connections:
host all all 127.0.0.1/32 trust
创建备份目录:
su - root
. /opt/greenplum-db-4.3.6.2/greenplum_path.sh
gpssh -f all_hosts -e 'mkdir -p /home/gpadmin/gp_dump'
gpssh -f all_hosts -e 'chown gpadmin /home/gpadmin/gp_dump'
库级别备份:
gp_dump pay --gp-d /home/gpadmin/gp_dump/ --gp-r=/home/gpadmin/gp_dump/
create table c1 (id int);
insert into c1 values(1);
库级别恢复:
drop schema pay cascade;
gp_restore -d pay --gp-d /home/gpadmin/gp_dump/ --gp-r=/home/gpadmin/gp_dump/ --gp-k=20160413154538
报错:
gp_restore-[ERROR]:-Error executing query SELECT * FROM gp_read_backup_file('/home/gpadmin/gp_dump/', '20160413154538', 2) : ERROR: Backup File /home/gpadmin/gp_dump/gp_restore_status_1_1_20160413154538 Type 2 could not be be found
解决:加上-status参数,指定status file写目录
gp_restore -d pay --gp-d /home/gpadmin/gp_dump/ --gp-r=/home/gpadmin/gp_dump/ --gp-k=20160413154538 --status=/home/gpadmin/gp_dump/
采用gpcrondump备份
gpcrondump与gprestore是一对备份恢复工具
备份:
gpcrondump -x pay -u /home/gpadmin/gp_dump/ -c -g -G -a -q >>/home/gpadmin/gp_dump/gp_paydump.log
或:这样会自动在各自的数据目录中创建目录db_dumps
gpcrondump -x pay -c -g -G -a -q >>/home/gpadmin/gp_dump/gp_paydump2.log
恢复:
more /data/master/gpseg-1/db_dumps/20160413/gp_dump_20160413162414.rpt
gpdbrestore pay -t 20160413162414 --report-status-dir=/home/gpadmin/
加入调度
crontabl -e
gpadmin source $GPHOME/greenplum_path.sh;gpcrondump -x testdw -c -g -G -a -q >>gp_testdwdump.log
恢复到配置不同的GP系统
在master上完成
使用并行备份文件通过GP Master做非并行装载
segment备份文件内容包含了COPY命令,数据是分割平面格式
恢复步骤:
确保具备了全部的备份文件,包含master和每个segment的文件,所有的文件具有相同的时间戳
创建数据库
more /data/master/gpseg-1/db_dumps/20160413/gp_cdatabase_1_1_20160413162414 --创建数据库脚本
装载master备份文件以恢复数据库对象
cd /data/master/gpseg-1/db_dumps/20160413
gunzip gp_dump_1_1_20160413162414.gz
psql pay -f /data/master/gpseg-1/db_dumps/20160413/gp_dump_1_1_20160413162414
装载每个segment的备份文件以恢复数据
sdw1:scp gp_dump_0_2_20160413162414.gz mdw1:/data/master/gpseg-1/db_dumps
sdw2:scp gp_dump_0_3_20160413162414.gz mdw1:/data/master/gpseg-1/db_dumps
mdw1:
gunzip gp_dump_0_2_20160413162414.gz
gunzip gp_dump_0_3_20160413162414.gz
psql pay -f /data/master/gpseg-1/db_dumps/gp_dump_0_2_20160413162414
psql pay -f /data/master/gpseg-1/db_dumps/gp_dump_0_3_20160413162414
恢复table相关的对象,如索引,触发器、主键约束等
cd /data/master/gpseg-1/db_dumps/20160413
gunzip gp_dump_1_1_20160413162414_post_data.gz
psql pay -f/data/master/gpseg-1/db_dumps/20160413/gp_dump_1_1_20160413162414_post_data
psql备份恢复
导出包含分布键信息的pay数据库到SQL文件
pg_dump pay --gp-syntax >pay.sql
psql -d pay -f pay.sql
select pg_size_pretty(pg_database_size('pay'));
-------------------
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/91975/viewspace-2080620/
,如需转载,请注明出处,否则将追究法律责任。