GreenPlum--备份与恢复

备份恢复操作概述-关于并行备份(gp_dump)

GP同时备份Master和所有活动的Segment实例
备份消耗的时间与系统中实例的数据没有关系
在Master主机上备份所有DDL文件和GP相关的数据字典表
每个Segment备份各自的数据
所有备份文件组成一个完整的备份集合,通过唯一14位数字的时间戳来识别

缺点:
1、还有一分部内容没有备份,比如说用户角色信息、服务器配置信息,日志等,这时候可以用gpcrondump
2、没有增量备份的机制

关于非并行备份(pg_dump)
GP依然支持常规的PostgreSQL备份命令pg_dump和pu_dumpall
备份将在Master主机上创建一个包含所有Segment数据的大的备份文件
不适合于全部数据备份,适用于小部分数据的迁移或备份

关于并行恢复(gp_restore)
通过gp_dump产生的时间戳来辨识备份集合,恢复数据库对象和数据到分布式数据库中
每个Segment并行恢复各自的数据
被恢复的GP系统必须与备份的系统同构(节点一致等等)

关于非并行恢复(pg_restore)
使用由pg_dump或pg_dumpall创建的备份文件来恢复
使用非并行恢复可以实现异构系统恢复

备份数据库的四种选择:
为每个实例创建一个备份文件
可用于全库备份或者相同配置的系统之间迁移数据;

使用gpcrondump进行定期备份
对gp_dump进行包装,使用cron调度GP数据库的后台进行备份;
调用gpcrondump的调度作业应该不是在GP的Master主机;
gpcrondump命令还备份数据库角色和服务器配置德国数据库之外的对象

使用gp_dump或pg_dump创建单个备份文件
可用于布偶听数据库之间少量数据迁移或备份;

文件系统备份
借助操作系统或者其他第三方工具来进行备份,实现增量备份。

使用gp_dump
备份GP数据库
$gp_dump testdw
注意调整selinux安全级别,/usr/sbin/setenforce 0

默认的是/etc/selinux/config 修改为SELINUX=disabled
如果是临时修改就用/usr/sbin/setenforce 0

gp_dump命令将在数据目录生成如下的备份文件
在Master主机上

数据字典表:
gp_catalog_1_<dbid>_<timestamp>
创建数据库SQL语句:
gp_cdatabase_1_<dbid>_<timestamp>
创建schema SQL语句:
gp_dump_1_<dbid>_<timestamp>
创建Table SQL语句:
gp_dump_1_<dbid>_<timestamp>_post_data

在Segment主机上

用户数据文件
gp_dump_0_<dbid>_<timestamp>
日志文件:
gp_dump_status_0_<dbid>_<timestamp>

使用gpcrondump
gpcrondump在Master和Segment的数据目录创建备份文件:
<data_directory>/db_dumps/YYYYMMDD
Segment数据的备份使用gzip压缩格式
使用CRON调度备份操作
定义一个调用gpcrondump的crontab条目。
例如,在午夜1点备份testdw数据库
0 1 0 *** gpadmin source $GPHOME/greenplum_path.sh;
gpcrondump -x testdw -c -g -G -a -q >>gp_testdwdump.log
创建一个名为mail_contacts的文件放置在GP SUPERUSER的根目录。
例如, $vi /home/gpadmin/mail_contacts
在该文件中,每行输入一个电邮地址。例如:
[email protected]

非并行备份与恢复

使用pg_dump或者pg_dumpall进行备份
导出testdw数据库到SQL脚本文件
pg_dump testdw > testdw.sql
导出包含分布键信息的testdw数据库到tar文件
pg_dump -Ft -gp-syntax testdw > testdw.tar
导出testdw数据库到定制格式的归档文件
pg_dump -Fc testdw > testdw.dump
导出单个表
pg_dump -t tb_cp_02 testdw > tb_cp_02_testdw.sql
导出混合大小写名称的表
pg_dump -t '“MixedTableName”'testdw > tab_testdw.sql
集群备份
pg_dumpall > all.dump
非并行恢复
使用pg_restore或psql进行恢复
恢复testdw数据库
pg_restore -d testdw testdw.dump
恢复SQL备份文件
psql -d testdw -f tb_cp_02_testdw.sql

从并行备份文件恢复
在决定使用恢复程序时,需确定以下几个问题:
备份文件在哪里?
如果备份文件位于gp_dump生成的原始位置,可以简单的通过gp_restore命令恢复;
如果备份文件已经移除GP集群,使用gpdbrestore来恢复
是否需要恢复整个系统,还是只恢复数据?
如果GP仍在运行并仅需要恢复数据,使用gp_restore或gpdbrestore命令来恢复;
如果丢失了整个集群或者需要从备份来重建整个集群,使用gpinitsystem命令
是否恢复的系统与备份时的系统具有相同数量的Instance?
如果相同,使用gp_restore或gpdbrestore命令来恢复;
如果是在不同集群间迁移,必须使用非并行恢复

使用gp_restore恢复

如果在备份时使用了参数:-s(仅模式),-a(仅数据),–gp-c(压缩),–gp-d(修改备份文件目录),那么在恢复时也要指定这些参数。
gp_restore命令将执行如下操作:

在Master主机上
运行由gp_dump生成的gp_dump_1_文件中SQL DDL命令,重建数据库的模式和对象;
在Master输数据目录生成日志文件,日志文件的名称为:
gp_restore_status_1
_
gp_restore在每个需要恢复的Instance上启动一个名为gp_restore_agent的程序,gp_restore_agent进程报告状态

在Segment主机上
每个Instance使用gp_dump生成的gp_dump_1_文件来恢复用户数据
每个Instance生成一个入职文件,名字为:gp_restore_status_1
_

恢复数据库
创建需要被恢复的数据库。例如:
$createdb testdw
在Master主机,运行gp_restore命令(–gp-k指定备份操作时间戳标识符,-d指定恢复的数据库)
$gp_restore -gp-k=20131231001327 -d testdw

使用gpdbrestore恢复
gpdbrestore命令是对gp_restore命令的包装,提供更灵活的选项
使用gpcrondump备份生成的备份文件来进行恢复
恢复testdw数据
创建需要被恢复的数据库。例如;
$createdb testdw
在Master主机上执行gpdbrestore命令(-R指定备份文件所在的主机名和路径)
$gpdbrestore -b 20121231
或者从归档主机恢复(-R指定备份文件所在的主机名和路径)
$gpdbrestore -R archive_host:/gpdb/backups/archive/20131231

恢复到配置不同的GP系统
使用并行备份文件通过GP Master做非并行装载
Segment备份文件内容包含了COPY命令,数据是分割平面格式
恢复步骤
确保具备了全部的备份文件,包括Master和每一个Segment的文件,所有的文件具有相同的时间戳表示
创建需要恢复的数据库
$createdb testdw
装载Master备份文件以恢复数据库对象
$psql testdw -f /data/backups/gp_dump_1_1_20131231001327
装载每个Segment的备份文件以恢复数据
$psql testdw -f /data/backups/gp_dump_0_2_20131231001327
$psql testdw -f /data/backups/gp_dump_0_3_20131231001327
恢复Table相关的对象,比如索引、触发器、主键约束等
$psql testdw -f /data/backups/gp_dump_1_1_20131231001327_post_data

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章