Greenplum的全量恢复之gpdbrestore
1. 存在gpcrondump操作生成的备份文件。
2. GPDB系统正在运行。
3. 当前恢复的GPDB系统与使用gp_dump备份时的GPDB系统具有相同数量的Instance。
-a (do not prompt) Do not prompt the user for confirmation. -b <YYYYMMDD> Looks for dump files in the segment data directories on the Greenplum Database array of hosts in db_dumps/<YYYYMMDD>. -d <master_data_directory> Optional. The master host data directory. If not specified, the value set for $MASTER_DATA_DIRECTORY will be used. -e (drop target database before restore) Drops the target database before doing the restore and then recreates it. -G [include|only] Restores global objects such as roles and tablespaces if the global object dump file db_dumps/<date>/gp_global_1_1_<timestamp> is found in the master data directory. Specify either "-G only" to only restore the global objects dump file or "-G include" to restore global objects along with a normal restore. Defaults to "include" if neither argument is provided. -l <logfile_directory> The directory to write the log file. Defaults to ~/gpAdminLogs. -m (restore metadata only) Performs a restore of database metadata (schema and table definitions, SET statements, and so forth) without restoring data. If the --restore-stats or -G options are provided as well, statistics or globals will also be restored. The --noplan and --noanalyze options are not supported in conjunction with this option, as they affect the restoration of data and no data is restored. --prefix <prefix_string> If you specified the gpcrondump option --prefix <prefix_string> to create the backup, you must specify this option with the <prefix_string> when restoring the backup. If you created a full backup of a set of tables with gpcrondump and specified a prefix, you can use gpcrondump with the options --list-filter-tables and --prefix <prefix_string> to list the tables that were included or excluded for the backup. --restore-stats [include|only] Restores optimizer statistics if the statistics dump file db_dumps/<date>/gp_statistics_1_1_<timestamp> is found in the master data directory. Setting this option automatically skips the final analyze step, so it is not necessary to also set the --noanalyze flag in conjunction with this one. -t <timestamp_key> The 14 digit timestamp key that uniquely identifies a backup set of data to restore. It is of the form YYYYMMDDHHMMSS. Looks for dump files matching this timestamp key in the segment data directories db_dumps directory on the Greenplum Database array of hosts. -T <schema>.<table_name> Table names to restore, specify multiple times for multiple tables. The named table(s) must exist in the backup set of the database being restored. Existing tables are not automatically truncated before data is restored from backup. If your intention is to replace existing data in the table from backup, truncate the table prior to running gpdbrestore -T. -S <schema> Schema names to restore, specify multiple times for multiple schemas. Existing tables are not automatically truncated before data is restored from backup. If your intention is to replace existing data in the table from backup, truncate the table prior to running gpdbrestore -S. --truncate Truncate table data before restoring data to the table from the backup. This option is supported only when restoring a set of tables with the option -T or --table-file. This option is not supported with the -e option. -u <backup_directory> Specifies the absolute path to the directory containing the db_dumps directory on each host. If not specified, defaults to the data directory of each instance to be backed up. Specify this option if you specified a backup directory with the gpcrondump option -u when creating a backup set. If <backup_directory> is not writable, backup operation report status files are written to segment data directories. You can specify a different location where report status files are written with the --report-status-dir option.
[gpadmin@mdw ~]$ psql lottu gpadmin
psql ()
Type "help" for help.
lottu=# \dt
List of relations
Schema | Name | Type | Owner | Storage
--------+--------------------+-------+---------+---------
public | gpcrondump_history | table | gpadmin | heap
public | lottu01 | table | gpadmin | heap
public | lottu02 | table | gpadmin | heap
( rows)
lottu=# drop table lottu01;
DROP TABLE
lottu=# \q
[gpadmin@mdw ~]$ psql lottu gpadmin
psql ()
Type "help" for help.
lottu=# select * from lottu01;
ERROR: relation "lottu01" does not exist
LINE : select * from lottu01
[gpadmin :::: gpdbrestore:mdw:gpadmin-[INFO]:-Starting gpdbrestore with args: -a -e --prefix lottu -u /home/gpadmin/backup --restore-stats include --report-status-dir /home/gpadmin/backup -t :::: gpdbrestore:mdw:gpadmin-[INFO]:------------------------------------------- :::: gpdbrestore:mdw:gpadmin-[INFO]:-Greenplum database restore parameters :::: gpdbrestore:mdw:gpadmin-[INFO]:------------------------------------------- :::: gpdbrestore:mdw:gpadmin-[INFO]:-Restore type = Full Database :::: gpdbrestore:mdw:gpadmin-[INFO]:-Database to be restored = lottu :::: gpdbrestore:mdw:gpadmin-[INFO]:-Drop and re-create db = On :::: gpdbrestore:mdw:gpadmin-[INFO]:-Restore method = Restore specific timestamp :::: gpdbrestore:mdw:gpadmin-[INFO]:-Restore timestamp = :::: gpdbrestore:mdw:gpadmin-[INFO]:-Restore compressed dump = On :::: gpdbrestore:mdw:gpadmin-[INFO]:-Restore global objects = Off :::: gpdbrestore:mdw:gpadmin-[INFO]:-Array fault tolerance = f :::: gpdbrestore:mdw:gpadmin-[INFO]:------------------------------------------- :::: gpdbrestore:mdw:gpadmin-[INFO]:-Dropping Database lottu :::: gpdbrestore:mdw:gpadmin-[INFO]:-Dropped Database lottu :::: gpdbrestore:mdw:gpadmin-[INFO]:-Invoking sql file: /home/gpadmin/backup/db_dumps//lottu_gp_cdatabase_1_1_20160713160238 :::: gpdbrestore:mdw:gpadmin-[INFO]:-Creating gp_toolkit schema for database "lottu" :::: gpdbrestore:mdw:gpadmin-[INFO]:-Adding --prefix :::: gpdbrestore:mdw:gpadmin-[INFO]:-gp_restore commandline: gp_restore -i -h mdw -p -U gpadmin --gp-i --prefix=lottu_ --gp-k= --gp-l=p --gp-d=/home/gpadmin/backup/db_dumps/ --gp-r=/home/gpadmin/backup --status=/home/gpadmin/backup --gp-c -d "lottu": :::: gpdbrestore:mdw:gpadmin-[WARNING]:-gpdbrestore finished but ERRORS were found, please check the restore report file for details :::: gpdbrestore:mdw:gpadmin-[INFO]:-Updating AO/CO statistics on master :::: gpdbrestore:mdw:gpadmin-[INFO]:-No AO/CO tables restored, skipping statistics update... :::: gpdbrestore:mdw:gpadmin-[INFO]:-Commencing restore of statistics
[gpadmin@mdw ~]$ psql lottu gpadmin
psql ()
Type "help" for help.
lottu=# select * from lottu01;
id | name
----+---------
| lottu1
| lottu3
| lottu5
| lottu7
| lottu9
| lottu2
| lottu4
| lottu6
| lottu8
| lottu10
( rows)
lottu=# \dt
List of relations
Schema | Name | Type | Owner | Storage
--------+---------+-------+---------+---------
public | lottu01 | table | gpadmin | heap
public | lottu02 | table | gpadmin | heap
( rows)
lottu=# \d lottu01
Table "public.lottu01"
Column | Type | Modifiers
--------+-----------------------+-----------
id | integer | not null
name ) |
Indexes:
"lottu01_pkey" PRIMARY KEY, btree (id)
Distributed by: (id)
. gpdbrestore -e 参数表示恢复前是否执行 drop database, 然后执行 create database。所以如果目标环境没有对应的数据库的话,不需要加-e参数,否则会报错。表级恢复也不要使用-e。 . 如果 gpcrondump 时使用了-C 参数, 则恢复时会先执行DROP TABLE再执行建表的动作。 . 如果 gpcrondump 时没有使用 -C 参数,参数恢复时想先清理数据的话,可以使用gpdbrestore的--truncate参数(--truncate只能是表级恢复模式下使用, 即与-T . 或 --table-file 一同使用) . Greenplum不允许删除模板库, 所以如果使用-e恢复模板库,会报错。 解决方法是改gpcrondump代码,对于模板库特殊处理,例如drop schema的方式清理模板库, 跳过模板库的DROP database报错以及create database 报错。
综上所述:gpdbrestore所带的参数取决于gpcrondump备份的参数是怎么选择的。这个用于数据库迁移(只限于配置相同架构的数据库)
参考文献:https://yq.aliyun.com/articles/30331?spm=5176.8067842.tagmain.48.etfAn9
Greenplum的全量恢复之gpdbrestore的更多相关文章
- Greenplum的全量备份之gpcrondump
gpcrondump是对gp_dump的一个包装,可以直接调用或者从crontab中调用.这个命令还允许备份除了数据库和数据之外的对象,比如数据库角色和服务器配置等. gpcrondump 常用到的参 ...
- greenplum全量恢复gprecoverseg -F出现Unable to connect to database时的相关分析及解决方法
之前有两位朋友碰到过在对greenplum的系统构架更改后,出现全量恢复gprecoverseg -F也无法正常执行的情况. 报错信息为Unable to connect to database. R ...
- 【直播】APP全量混淆和瘦身技术揭秘
[直播]APP全量混淆和瘦身技术揭秘 近些年来移动APP数量呈现爆炸式的增长,黑产也从原来的PC端转移到了移动端,通过逆向手段造成数据泄漏.源码被盗.APP被山寨.破解后注入病毒或广告现象让用户苦不堪 ...
- mysql备份脚本,每天执行一次全量备份,三次增量备份
线上一个小业务的mysql备份 全量备份 #!/bin/bash #crete by hexm at -- #scripte name : full_backup.sh #descriptioni : ...
- Mysql备份系列(4)--lvm-snapshot备份mysql数据(全量+增量)操作记录
Mysql最常用的三种备份工具分别是mysqldump.Xtrabackup(innobackupex工具).lvm-snapshot快照.前面分别介绍了:Mysql备份系列(1)--备份方案总结性梳 ...
- Mysql备份系列(2)--mysqldump备份(全量+增量)方案操作记录
在日常运维工作中,对mysql数据库的备份是万分重要的,以防在数据库表丢失或损坏情况出现,可以及时恢复数据. 线上数据库备份场景:每周日执行一次全量备份,然后每天下午1点执行MySQLdump增量备份 ...
- Mysql备份系列(3)--innobackupex备份mysql大数据(全量+增量)操作记录
在日常的linux运维工作中,大数据量备份与还原,始终是个难点.关于mysql的备份和恢复,比较传统的是用mysqldump工具,今天这里推荐另一个备份工具innobackupex.innobacku ...
- 利用ant脚本 自动构建svn增量/全量 系统程序升级包
首先请允许我这样说,作为开发或测试,你一定要具备这种 本领.你可以手动打包.部署你的工程,但这不是最好的方法.最好的方式就是全自动化的方式.开发人员提交了代码后,可以自动构建.打包.部署到测试环境. ...
- 微信连wifi正式全量对外开放申请 升级智能服务
之前我们提到过微信公众平台"微信连Wi-Fi"功能来了,昨日,微信连Wi-Fi自助申请入口正式全量对外开放(独立申请入口https://wifi.weixin.qq.com/),意 ...
随机推荐
- linux普通用户权限设置为超级用户权限方法、sudo不用登陆密码
以用户zato为例 普通用户权限设置为超级用户权限 进入有超级用户权限的账号 添加文件可写(w)权限 sudo chmod u+x /etc/sudoers 编辑/etc/sudoers文件 添加语句 ...
- javascript设计模式学习之六——代理模式
一.代理模式定义 代理模式的关键是:当客户不方便直接访问一个对象或者不满足需要的时候,提供一个替身对象来控制对这个对象的访问.代理模式需要和本体对外提供相同的接口,对用户来说是透明的.代理模式的种类有 ...
- 解决td标签上的position:relative属性在各浏览器中的兼容性问题
在css中的position属性规定了页面元素的定位类型,它有以下几个值: absolute:绝对定位,相对于static以外的第一个父元素进行定位: fixed:生成绝对定位的元素,相对于浏览器窗口 ...
- php:mysqli扩展
mysqli功能概述:http://php.net/manual/zh/mysqli.summary.php 代码(基本的用法):貌似可以防止sql注入 $root = "root" ...
- MVC 学习系列
总是很难说清MVC的概念,即使读了源代码后(读的时候有些东西,理解起来还是有点吃力),也依然能难对整体的每一个具体的原理说的一清二楚.为了达到自己学习的目的,我把自己的学习路线写成文章,一边自己能对M ...
- EL表达<%@page isELIgnored="false"%>问题
上网查找资料后得知:主要原因是EL表达式无法被解析到. 其实从后台取值并传值到前台来根本就没有错,而前台JSP页面EL表达式无效,解析不到EL表达式,引起的原因是web.xml中: <web-a ...
- C++Primer 第五章
//1.表达式语句的作用:执行表达式并丢弃求值结果 ; value + ; //执行,并丢弃结果 //2.复合语句是指用花括号括起来的语句和声明的序列,复合语句称为块.一个块就是一个作用域.块不以分号 ...
- Lintcode: Search Range in Binary Search Tree
Given two values k1 and k2 (where k1 < k2) and a root pointer to a Binary Search Tree. Find all t ...
- [原创]java WEB学习笔记51:国际化 概述,API 之 locale类,dataFormat类,numberFormat类, MessageFormat类,ResourceBundle 类
本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...
- 解决Android抽屉被击穿问题
1,创建一个抽屉DrawerLayout,在V4包下android.support.v4.widget.DrawerLayout,在要设置抽屉的布局中设置android:layout_gravity= ...