Greeplum 系列(六) 备份与恢复

Greeplum 系列(六) 备份与恢复

一、备份

1.1 并行备份(gp_dump)

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

gp_dump dbname;

gp_dump 命令将在数据目录生成如下的备份文件:

-- 在 Master 主机上
gp_catalog_1_<dbid>_<timestamp>     -- 数据字典表
gp_cdatabase_1_<dbid>_<timestamp>   -- 创建数据库 SQL 语句
gp_dump_1_<dbid>_<timestamp>        -- 创建 schema SQL 语句
gp_dump_1_<dbid>_<timestamp>_post_data  -- 创建 Table SQL 语句

-- 在 Segment 主机上
gp_dump_0_ <dbid>_<timestamp>           -- 用户数据文件
gp_dump_status_0_ <dbid>_<timestamp>    -- 日志文件

1.2 并行备份(gpcrondump)

在 Master 和 Segment 的数据目录创建备份文件:

-- Segment 数据的备份使用 gzip 压缩格式
<data_directory>/db_dumps/YYYYMMDD

使用 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

-- mail_contacts 放入邮件地址
[email protected]

1.3 非并行备份(pg_dump)

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

pg_dump testdw > testdw.sql;        -- 导出 SQL 脚本文件
pg_dump –Ft –gp-syntax testdw > testdw.tar;         -- 导出包含分布键信息的 tar 文件
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;              -- 集群备份

二、恢复

2.1 并行恢复(gp_restore)

通过 gp_dump 产生的时间戳来辨识备份集合,恢复数据库对象和数据到分布式数据库中,每个 Segment 并行恢复各自的数据。被恢复的 GP 系统必须与备份的系统同构,否则只能使用串行恢复。

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

gp_restore 命令将执行如下操作

(1) 在 Master 主机上

  1. 运行由 gp_dump 生成的 gp_dump_1_
  2. 在 Master 数据目录生成日志文件,日志文件的名称为:gp_restore_status_1_
  3. gp_restore 在每个需要恢复的 Instance 上启动一个名为 gp_restore_agent 的程序,gp_restore_agent 进程在 Segment 主机上运行并向 Master 主机上的 gp_restore 进程报告状态

(2) 在 Segment 主机上

  1. 每个 Instance 使用 gp_dump 生成的 gp_dump_1
  2. 每个 Instance 生成一个日志文件,名字为:gp_restore_status_1_

恢复数据库

createdb testdw;
-- 在Master主机,运行gp_restore命令(--gp-k 指定备份操作时间戳标识符,-d 指定恢复的数据库)
gp_restore –gp-k=20131231001327 –d testdw;

2.2 并行恢复(gpdbrestore)

gpdbrestore 命令是对 gp_restore 命令的包装,提供更灵活的选项,使用 gpcrondump 备份生成的备份文件来进行恢复。

createdb testdw;        -- 创建需要被恢复的数据库
gpdbrestore –b 20131231;
-- 在 Master 主机上执行 gpdbrestore 命令(-R 指定备份文件所在的主机名和路径)
gpdbrestore –R archive_host:/gpdb/backups/archive/20131231;

2.3 非并行恢复(pg_restore)

使用由 pg_dump 或 pg_dumpall 创建的备份文件来恢复,使用非并行恢复可以实现异构系统恢复。

-- 使用 pg_restore 或 psql 进行恢复
pg_restore –d testdw testdw.dump;
psql -d testdw –f tb_cp_02_testdw.sql;

在决定使用恢复程序时,需确定以下几个问题:

  1. 备份文件在哪里?

    如果备份文件位于 gp_dump 生成的原始位置,可以简单的通过 gp_restore 命令恢复;如果备份文件已经移除 GP 集群,使用 gpdbrestore 来恢复

  2. 是否需要恢复整个系统,还是只恢复数据?

    如果 GP 仍在运行并仅需要恢复数据,使用 gp_restore 或 gpdbrestore 命令来恢复;如果丢失了整个集群或者需要从备份来重建整个集群,使用 gpinitsystem 命令

  3. 是否恢复的系统与备份时的系统具有相同数量的 Instance?

    如果相同,使用 gp_restore 或 gpdbrestore 命令来恢复; 如果是在不同集群间迁移,必须使用非并行恢复。

2.4 非并行恢复异构系统

确保具备了全部的备份文件,包括 Master 和每一个 Segment 的文件,所有的文件具有相同的时间戳标识符

-- 1. 创建需要恢复的数据库
createdb testdw;
-- 2. 装载 Master 备份文件以恢复数据库对象
psql -d testdw -f /data/backups/gp_dump_1_1_20131231001327;
-- 3. 装载每个 Segment 的备份文件以恢复数据
psql –d testdw -f /data/backups/gp_dump_0_2_20131231001327;
psql –d testdw -f /data/backups/gp_dump_0_3_20131231001327;
-- 4. 恢复 Table 相关的对象,比如索引、触发器、主键约束等
psql –d testdw -f /data/backups/ gp_dump_1_1_20131231001327_post_data;


每天用心记录一点点。内容也许不重要,但习惯很重要!

原文地址:https://www.cnblogs.com/binarylei/p/9069425.html

时间: 2024-08-30 18:18:41

Greeplum 系列(六) 备份与恢复的相关文章

Greeplum 系列(三) 基本用法

Greeplum 系列(三) 基本用法 <PostgreSQL 教程>:https://www.yiibai.com/postgresql 一.Greeplum 登陆与创建 1.1 登陆 psql -d test -h 127.0.0.1 -p 5432 -U gpadmin 注意:默认登陆的表名为 gpadmin 1.2 创建数据库 create database test; # 需要登陆 psql createdb test; # 命令行模式 二.创建与管理模式 访问模式的对象:schem

C语言快速入门系列(六)

C语言快速入门系列(五) C语言指针加强 本节引言: 上一节我们对C语言中的指针进行了初步的了解,学习了指针的定义,与普通变量 一维数组,二维数组,字符串之间的使用!在本节中我们将会学习一些新的知识点, 函数,结构体与共用体,枚举类型以及类型定义符typedef! 本节学习路线图: 本节正文 函数 ps:空函数就是什么都不做的函数,开发过程中不需要马上实现的,先写空函数!简单的空函数:void abc(){   } 结构体 共用体: 代码示例2: 建立一个共用体类型,当输入的时学生类型时,要求输

【C++自我精讲】基础系列六 PIMPL模式

0 前言 很实用的一种基础模式. 1 PIMPL解释 PIMPL(Private Implementation 或 Pointer to Implementation)是通过一个私有的成员指针,将指针所指向的类的内部实现数据进行隐藏. 2 PIMPL优点 举例: //x.h class X { public: void Fun(); private: int i; //add int i; }; //c.h #include <x.h> class C { public: void Fun()

iOS流布局UICollectionView系列六——将布局从平面应用到空间

iOS流布局UICollectionView系列六--将布局从平面应用到空间 一.引言 前面,我们将布局由线性的瀑布流布局扩展到了圆环布局,这使我们使用UICollectionView的布局思路大大迈进了一步,这次,我们玩的更加炫一些,想办法将布局应用的空间,你是否还记得,在管理布局的item的具体属性的类UICollectionViewLayoutAttributrs类中,有transform3D这个属性,通过这个属性的设置,我们真的可以在空间的坐标系中进行布局设计.iOS系统的控件中,也并非

Netty4.x中文教程系列(六) 从头开始Bootstrap

Netty4.x中文教程系列(六) 从头开始Bootstrap 其实自从中文教程系列(五)一直不知道自己到底想些什么.加上忙着工作上出现了一些问题.本来想就这么放弃维护了.没想到有朋友和我说百度搜索推荐了我的文章.瞬间有点小激动啊.决定自己要把这个教程系列完善下去.这里诚挚的想支持我的盆友们道歉.真的是让你们失望了.我居然有想放弃的这种丧心病狂的念头.以后绝对不会了. 其实伴随着对Netty的逐步深入学习.感觉自己对netty的了解仍然有所欠缺.加上笔者语文课是美术老师教的.所以..说多了都是泪

Cocos2d-x 系列六之数据操作

一.定时器  在cocos2d-x中, 类似定时器的操作,不需要额外的写Timer,实际上,在Node元素中,已经添加了定时执行的功能: 先来看看在Node中的定义 // ... bool Node::isScheduled(SEL_SCHEDULE selector) { return _scheduler->isScheduled(selector, this); } void Node::scheduleUpdate() { scheduleUpdateWithPriority(0); }

SNIFF(原始套接字系列六)

大家知道,以太网采用广播机制,所有与网络连接的工作站都可以看到网络上传递的数据.通过查看包含在帧中的目标地址,确定是否进行接收或放弃.如果证明数据确实是发给自己的,工作站将会接收数据并传递给高层协议进行处理.但是,如果让网卡置于混杂模式(Promiscuous mode),则网卡不会鉴别帧的MAC地址,而是一律接收. 上图给出了以太网的帧格式,网卡是通过图中的MAC地址进行ID标识的.传说中的网络嗅探(sniffer)就是指让网卡进入混杂模式从而接收正在局域网总线上发送的所有报文.为什么能够嗅探

智能路由器-OpenWRT 系列六 (远程迅雷离线下载)

OpenWRT 系列教程 智能路由器-OpenWRT 系列一 (OpenWRT 刷机) 智能路由器-OpenWRT 系列二 (OpenWRT初始配置) 智能路由器-OpenWRT 系列三 (OpenWRT安装LuCI&网络配置) 智能路由器-OpenWRT 系列四 (挂载移动设备) 智能路由器-OpenWRT 系列五 (NAS-SMB家庭共享) 智能路由器-OpenWRT 系列六 (远程迅雷离线下载) 下载 Xware1.0.31,参考地址 http://luyou.xunlei.com/thr

SQL Server 2008空间数据应用系列六:基于SQLCRL的空间数据可编程性

原文:SQL Server 2008空间数据应用系列六:基于SQLCRL的空间数据可编程性 友情提示,您阅读本篇博文的先决条件如下: 1.本文示例基于Microsoft SQL Server 2008 R2调测. 2.具备 Transact-SQL 编程经验和使用 SQL Server Management Studio 的经验. 3.具有使用 Microsoft Visual Studio 进行 Microsoft .NET Framework开发的经验. 4.熟悉或了解Microsoft S