GreenPlum备份恢复工具之gpbackup和gprestore

0    21    1

Tags:

👉 本文共约16126个字,系统预计阅读时间或需61分钟。

简介及总结

有关gpbackup和gprestore有如下总结点,其它请参考:https://www.xmmup.com/greenplumshujukudebeifenhehuifu.html

1、gpbackup和gprestore是一个逻辑备份工具

2、gpbackup和gprestore是可以并行备份的工具

3、gpbackup和gprestore支持增量备份和压缩备份等功能,增量备份只对AO表起作用

4、gpbackup和gprestore是GreenPlum官方提供的备份恢复工具

5、默认情况下,gpbackup仅在Greenplum数据库master数据目录中存储备份的对象元数据文件和DDL文件。 Greenplum数据库节点使用COPY … ON SEGMENT命令将备份表的数据存储在位于每个节点的backups目录中的压缩CSV数据文件中。

6、需要额外进行安装,默认安装包不带该工具

7、工具是基于Golang写的

8、gpbackup 的必选参数只有 --dbname每次只能备份一个数据库,其他参数均为可选参数,有些参数之间是存在互斥关系的,建议命令:

9、一般备份要比恢复快很多。

10、官方文档:

https://docs.vmware.com/en/VMware-Tanzu-Greenplum-Backup-and-Restore/index.html

https://docs.vmware.com/en/VMware-Tanzu-Greenplum-Backup-and-Restore/1.27/tanzu-greenplum-backup-and-restore/GUID-backup-restore.html

安装gpbackup和gprestore

安装参考:https://docs.vmware.com/en/VMware-Tanzu-Greenplum-Backup-and-Restore/1.27/tanzu-greenplum-backup-and-restore/GUID-backup-restore-install.html

下载

下载地址:

https://github.com/greenplum-db/gpbackup

(推荐)https://network.pivotal.io/products/pivotal-gpdb-backup-restore

GreenPlum备份恢复工具之gpbackup和gprestore

安装

需要安装在所有的master、standby master和所有segment主机上:

使用gpadmin用户执行:

示例:

gpbackup帮助命令

从上面各个参数的详细解释中,大家也可以得出一个总结,gpbackup 的必选参数只有 --dbname,其他参数均为可选参数,有些参数之间是存在互斥关系的,大家在使用过程中一定要注意。

gprestore帮助命令

使用示例

gpbackup

常规备份,只指定--dbname参数

实验总结:

如果只指定数据库名称,会将这个数据库的所有对象都进行备份,例如:元数据、表数据、资源队列、资源组、角色等。

元数据存储在Master节点的$MASTER_DATA_DIRECTORY/backups/YYYYMMDD/YYYYMMDDhhmmss/目录下,会生成4个文件,其中:config.yaml 记录gpbackup 运行时的参数配置项;report记录备份下来的数据库对象信息,主要是对象数量;toc.yaml 记录元数据之间的依赖关系;metadata.sql 记录表结构DDL的详细信息。

Master节点生成的四个文件(standby master无数据):

生产表数据存储在segment实例的backups目录下,比如我这边/opt/greenplum/data/primary/gpseg0/backups/20230303/20230303121616

默认情况下,每个表生成一个单独的gzip压缩文件,通过pg_class中的oid作为后缀来做表关联对应。segment节点不存储任何生产表数据之外的数据。

解压打开其中一个表文件看一下,里面是csv内容:

如果你想解压x.txt.gz到x.txt,同时保留x.txt.gz,你可以输入:gunzip -c x.txt.gz > x.txt

指定--backup-dir参数进行备份

实验语句:

示例:

实验总结:

指定--backup-dir的操作可以将备份统一到一个固定的目录,这就要求所有服务器上必须都存在--backup-dir后面指定的这个目录,比如我这里的目录是/home/gpadmin/bk。这个适合公司对备份目录有固定要求,或者必须放置到共享存储中的场景,通过定义统一的目录,就可以把所有的备份数据都放在我们可以获知的任意位置(当然管理员用户必须具有目录的访问权限)。

Master节点上的信息展示如下,文件还是那些文件,只不过目录不同了。

Segment节点上的信息展示如下,可以看到是通过segment名字进行区别,所以不要担心在共享存储中会出现覆盖的问题。

指定--data-only参数只备份数据

实验语句:

实验总结:

如果指定了--data-only,Master节点将不会导出创建数据库对象的DDL语句,这个场景只适合于数据临时导出操作,没有表结构,如果恢复的时候数据库中没有表,也无法实现恢复。个人感觉这种场景不太多,毕竟备份一下DDL也不浪费多少时间。

Master节点中查看metadata.sql文件,没有信息,*Segment节点,显然只有表数据

指定--jobs参数进行并行备份

实验语句:

实验总结:

指定了--jobs=2参数以后,理论上在各个节点上备份时,会同时启动两个事务分别备份2个表,我们可以通过数据库的日志进行甄别,如下可以看到,四条日志中,前两条是上一次备份的日志,没开并行,可以看出时间是顺序的;后两条是本次开启2个并行的备份操作,可以看到基本是同一时间发起的:

指定--single-data-file参数将segment数据备份成单个文件

实验语句:

实验总结:

在上面的实验中,我首先把--jobs=2和--single-data-file参数同时使用,大家可以发现已经出现报错了,因为不支持这两个参数同时使用。下面第二个命令将并发参数去掉后,可以正常备份,这个参数会影响到segment节点把所有的表数据都备份到同一个文件中,如下查看单个segment备份目录下的文件可以看出:

指定--incremental参数进行增量备份

增量备份只对AO表起作用

实验总结:

增量备份参数--incremental,需要与--leaf-partition-data参数同时使用,并且在创建基础全量备份时,也必须带有该参数,否则增量备份找不到基础备份会报错退出。另外增量备份只对AO表有效,Heap表每次都会进行全量备份。

gprestore

如果要使用 gprestore 进行数据库恢复,那就要求您必须已经使用 gpbackup 进行了数据库备份,恢复时通过指定 --timestamp 参数把备份集传给 gprestore。如果您指定的是一个增量备份的时间戳,那这个增量备份的 base 全量备份及其他增量文件必须均存在,恢复时会校验备份集合的完整性,防止恢复出错。

在恢复数据时,默认情况下会将数据恢复到 gpbackup 备份的数据库中,如果该数据库已经不存在了,需要通过指定 --create-db 参数来自动创建数据库;如果数据库存在但是模式不存在,也会自动创建模式,如果模式已经存在,则会告警提示并继续恢复数据;如果数据库中同名的表已经存在,则恢复会失败并立刻停止。

常规恢复,只指定 --timestamp 参数

如果要进行 数据恢复,请指定备份数据集的时间戳,这些时间戳可以从备份目录的文件夹目录名称获取,只指定一个时间戳时,如果无论您指定的是全量备份还是增量备份的时间戳,都能正常恢复,指定全量备份时,只恢复全量部分; 指定增量备份时间戳时,会恢复改增量及其以前的增量和全量数据。

指定 --create-db 参数,自动创建数据库

实验总结:

--create-db 参数可以帮助我们自动创建数据库,所以我们如果想做全库恢复并且担心数据重复,最好把数据库整个删掉然后直接用该参数执行恢复,这样最省事了。

指定 --truncate-table 参数,恢复前把表清空

由于 --truncate-table 参数是用来清空表的,也就是说表必须是存在的,如果表必须存在,那我们就不需要再恢复 metadata 表结构,此时也就要求我们在使用 --truncate-table 时必须配合 --data-only 一起使用,否则会报错,下面的实验语句,我做了三次,分别实验了:

    1. 只带有 --truncate-table 参数;
    2. --truncate-table 参数和 --data-only 参数配合使用;
    3. --truncate-table 参数和第一个小实验中提示的 --include-table or --include-table-file 参数配合使用(实验报错),因为使用了 --include-table or --include-table-file 参数时,必须配合 --data-only 参数一起使用。

实验总结:

--truncate-table 参数只有和 --data-only 参数一起使用时才会有效,主要是为了防止数据恢复时存在重复的问题。

指定 --redirect-schema 参数,恢复到指定的模式

实验总结:

该实验展示了如何将 public 模式下的所有表恢复到 s1 模式下。您也可以将不同模式下的两个表的数据恢复到另外一个模式下的同一个表,但是这要求我们配合如下参数一起使用:--redirect-schema=s2 --include-table=public.tao --include-table=s1.tao --data-only 。

指定 --on-error-continue 参数,遇到问题并继续

慎用!!!

指定 --redirect-db 参数,恢复到特定数据库

--redirect-db 参数可以将 gpbackup 原来备份的数据库数据恢复到新的数据库中,该参数指定的数据库可以存在也可以不存在,如果数据库不存在,就必须配合 --create-db 参数一起使用。

实验总结:

在一些实验环境下,可以通过该参数从备份快速创建测试数据库,而不必担心对原来的数据库产生什么影响。如果目标数据库不存在,可以配合 --create-db 参数自动创建数据库。

备份恢复操作的状态码

为了方便大家在程序中调用 gpbackup/gprestore 命令后进行成功与否的判断,两个命令执行完成后,均会返回状态码,状态码几其代表的意义如下:

  • 0 - 备份 / 恢复成功,没有错误

  • 1 - 备份 / 恢复成功,没有 fatal 错误

  • 2 - 备份 / 恢复失败,带有 fatal 错误

邮件告警配置

gpbackup 和 gprestore 操作完成后,可以进行邮件告警,如果您想使用该功能,那就需要提前在 $HOME 目录或 $GPHOME/bin/ 目录下创建好发送邮件用的服务器信息配置,如果二者都做了配置,那会以 $HOME 目录下的文件为准。

编写配置文件 gp_email_contacts.yaml

文件格式如下,在创建 YAML 的时候,要保证 YAML 的格式正确:

gpbackup

创建一个可以给gprestore工具使用的Greenplum数据库备份。

概要

描述

gpbackup工具用来备份数据库的内容到元数据文件集合和数据文件集合,这些文件可以被 gprestore工具用来恢复数据库。当备份数据库时,可以通过指定表级别和模式级别选项来 备份某些特定的表。例如,可以通过组合模式级别和表级别选项来备份模式下的所有表,并排除某一张单独的表。

默认情况下,gpbackup备份指定数据库的对象和Greenplum数据库系统全局对象。可以通过 gprestore工具指定可选参数--with-globals来恢复全局对象。更多 信息请见备份或还原中包含的对象

gpbackup默认将Greenplum数据库备份对象元数据文件和DDL文件存储在Master数据目录下。 Greenplum Segment使用COPY … ON SEGMENT命令将数据备份为压缩CSV数据文件,并 存储在每个Segment的数据目录下。更多信息请见理解备份文件

可以通过指定--backup-dir选项将Master和Segment主机上的数据备份到一个绝对 路径下。可以通过指定其他选项来过滤备份集合来排除或包含指定的表。

可以通过指定 --incremental选项来启动增量备份。增量备份在追加优化表或 表分区上的变化数据小于未发生变化的数据时有效。有关增量备份的详细信息,请见使用gpbackup和gprestore创建增量备份

指定--jobs选项(1 job),Greenplum数据库Master主机上的每个 gpbackup操作都会启动一个单独的事务。COPY … ON SEGMENT命令在每个Segment主机上并行执行备份任务。备份进程会在备份的每张表 上唤起ACCESS SHARE锁。在表锁处理过程中,数据库处于静止状态。

当备份操作完成后,gpbackup会返回状态码。详情请见 返回码

gpexpand正在初始化新segments时,gpbackup工具不能 运行。集群扩展完成后,在扩展之前创建的备份不能被gprestore使用。

gpbackup可以在备份操作完成后发送Email状态通知。客户可以在配置文件中 创建工具发送和接收服务器信息。详情请见配置邮件通知

Note: 该工具在系统内部采用SSH连接执行各项操作任务。在大型Greenplum集群、云部署或每台主机部署了大量的 segment实例时,可能会遇到超过主机最大授权连接数限制的情况。此时需要考虑更新SSH配置参数MaxStartups 以提高该限制。更多关于SSH配置的选项,请参考您的Linux分发版的SSH文档。

选项

--dbname database_name

必须。指定要备份的数据库。

--backup-dir directory

可选。复制所有备份文件(元数据文件和数据文件)到指定路径。必须指定directory 为绝对路径(不能是相对路径)。如果不提供该选项,元数据文件会保存在Greenplum Master主机的 $MASTER_DATA_DIRECTORY/backups/YYYYMMDD/YYYYMMDDhhmmss/ 路径下。Segment主机的CSV数据文件保存在/backups/YYYYMMDD/YYYYMMDDhhmmss/ 路径下。当指定该选项时,文件会被复制到备份目录的子路径下。

该选项不能和--plugin-config一起使用。

--compression-level level

可选。指定用来压缩数据文件的gzip压缩级别(从1到9)。默认为1。注意,gpbackup 默认使用压缩。

--data-only

可选。仅将表数据备份到CSV文件,不备份用来重建表和其他数据库对象的元数据文件。

--debug

可选。显示操作期间的调试信息。

--exclude-schema schema_name

可选。指定要被排除备份的模式名。该参数可以指定多次以排除多个模式。该选项不能与 --include-schema一起使用,也不能与表过滤选项例如: --include-table一起使用。更多信息请见过滤备份或恢复的内容

--exclude-table schema.table

可选。指定要排除在备份中的表。被排除的表必须为格式. 。如果表或模式名使用了任何非小写字母、数字或下划线,必须用双引号包裹名字。该选项可以指定多次。 该选项不能与--exclude-schema或--include-table同时使用。

该选项不能和--leaf-partition-data组合使用。虽然您可以指定子分区名字,但是 gpbackup会忽略分区名称。

更多信息详见过滤备份或恢复的内容

--exclude-table-file file_name

可选。指定一个包含需要排除在备份之外的列表文件。每行必须指定一个单独的表,格式为 .。文件不能包含多余的行。 如果表或模式名使用了任何非小写字母、数字或下划线,必须用双引号包裹名字。该选项可以指定多次。 该选项不能与--exclude-schema或--include-table同时使用。

该选项不能和--leaf-partition-data组合使用。虽然您可以在--exclude-table-file 中指定子分区名字,但是gpbackup会忽略分区名称。

更多信息请见过滤备份或恢复的内容

--include-schema schema_name

可选。指定要包含在备份中的数据库模式名。可以多次指定该参数来包含多个备份模式。如果指定该选项, 任何不包含在--include-schema中的模式都不会放在备份集中。该选项不能与选项 --exclude-schema、--include-table或 --include-table-file一起使用。更多详情请见过滤备份或恢复的内容

--include-table schema.table

可选。指定一个要包含在备份中的表。该表的格式必须为.。 如果表或模式名使用了任何非小写字母、数字或下划线,必须用双引号包裹名字。有关模式和表名中支持的 字符信息详情,请见模式和表名中的模式和表名部分。

该选项可以指定多次。该选项不能和模式筛选选项--include-schema或--exclude-table-file等 一起使用。

客户也可以指定序列或视图的名字。

如果指定该选项,该工具不会自动备份依赖对象。客户必须指定相关依赖对象。例如,如果备份了视图, 客户必须备份试图所用的表。如果备份表用到了一个序列,客户必须也备份相关的序列。

可以在表名处通过指定--leaf-partition-data选项来指定表子分区名字, 仅备份指定的分区。当指定子分区备份时,子分区数据和分区表的元数据信息都会被备份。

更多信息请见过滤备份或恢复的内容

--include-table-file file_name

可选。指定一个备份时需要的表名列表文件。文件中的每行必须定义为单独的表名,格式为: .。该文件不能包含多余的列。 有关模式和表名中支持的 字符信息详情,请见模式和表名中的模式和表名部分。

任何没有列在文件中的表都会被排除在备份集以外。该选项不能与模式过滤选项--include-schema 或--exclude-table-file等一起使用。

该选项也可以指定序列和视图名称。

如果指定该选项,该工具不会自动备份依赖对象。客户必须指定相关依赖对象。例如,如果备份了视图, 客户必须备份试图所用的表。如果备份表用到了一个序列,客户必须也备份相关的序列。

可以在表名处通过指定--leaf-partition-data选项来指定表子分区名字, 仅备份指定的分区。当指定子分区备份时,子分区数据和分区表的元数据信息都会被备份。

更多信息请见过滤备份或恢复的内容

--incremental

指定该选项可以增加一个增量备份到增量备份集中。一个备份集包括一个全量备份和一个或多个增量备份。 该备份集合必须是连续性的,以保证在恢复时是可用的。

默认情况下,gpbackup会找出最近的备份。如果该备份是全备份,工具会创建一个 备份集合。如果备份为增量备份,工具会将备份增加到已经存在的备份集。增量备份被增加到备份集的最后 。可以通过指定--from-timestamp来覆盖默认的行为。

  • --from-timestamp backup-timestamp

    可选。指定备份时间戳。指定的备份必须已经有增量备份存在。如果指定的备份只有全量备份,该工具 会创建一个备份集。如果指定的备份是增量备份,工具会将增量备份直接备份到该备份集合。

该选项必须与--leaf-partition-data选项一起使用。不能与--data-only 或--metadata-only一起使用。

如果备份操作不能增加备份到已经存在的增量备份集或者不能使用备份来创建一个备份集,工具将不能创建备份 并且工具会返回错误。

有关创建和使用增量备份的详细信息,请见使用gpbackup和gprestore创建增量备份

--jobs int

可选。指定进行表备份的并行任务数量。默认gpbackup采用1个任务(数据库连接)。 增加该参数的值可以提高数据备份的速度。多运行多个任务时,每个任务会在一个单独的事务中备份表。 例如,如果指定--jobs 2,工具会创建2个进程,每个进程启动一个单独的事务, 工具会使用这两个进程并行的备份表。

Important: 如果指定超过1的值,数据库在工具从表上获取备份用的锁时处于静默状态。 如果数据库操作正在那些被备份的表上执行,此时进行备份的话这些表在不同事务中的锁处理和一致性 问题不能被保证。

该选项不能和--metadata-only、--single-data-file或 --plugin-config一起使用。

--leaf-partition-data

可选。对于分区表,该选项定义后会为每一个子分区创建一个单独的数据文件,而不是为整个表创建一个 完成的文件(默认)。使用该选项要求客户通过--include-table-file选项指定 包含在备份中的单独子节点分区。该选项不能与--exclude-table-file或 --exclude-table选项同时使用。

本人提供Oracle、MySQL、PG等数据库的培训和考证业务,私聊QQ646634621或微信db_bao,谢谢!

--metadata-only

可选。仅创建可用来重建数据库的元数据文件(DDL),不备份表的实际数据。

--no-compression

可选。不对表数据CSV文件进行压缩。

--plugin-config config-file_location

指定gpbackup插件配置文件的位置,该文件是一个YAML格式的文本文件。 该文件包含gpbackup在备份操作期间使用的配置信息。

如果在备份数据库时指定了--plugin-config选项,那么在从备份 恢复数据库时也需要同样指定对应的配置信息。

该选项不能与--backup-dir一起使用。

有关使用存储插件应用的详细信息,请见使用gpbackup存储插件部分。

--quiet

可选。不显示所有非告警、非错误日志信息。

--single-data-file

可选。在每个Segment主机上为所有备份的表创建一个单独的数据文件。默认情况下,每个gpbackup 会为每张表创建一个压缩CSV文件。

Note: 如果选用--single-data-file选项来将每个Segment上的数据备份为1个文件, 就不能在使用gprestore时指定--jobs选项为超过1的值来执行 并行恢复。

--verbose

可选。打印详细日志信息。

--version

可选。打印工具版本号并退出。

--with-stats

可选。在备份集中包含查询计划统计信息。

--help

显示在线帮助信息。

返回码

gpbackup完成后会返回如下返回码之一。

  • 0 – 成功完成备份。
  • 1 – 备份完成,没有严重错误。具体信息见日志文件。
  • 2 – 备份失败,有严重错误。具体信息见日志文件。

模式和表名

当指定表过滤项--include-table或--include-table-file 为列表文件时,gpbackup支持备份模式或表名包含以下特殊字符时。

~ ## $ % ^ & * ( ) _ - + [ ] { } > < \ | ; : / ? ! ,

如果在命令行指定--include-table选项时,名字包含大写字母或特殊字符时,名字必须被 单引号包裹。

当使用--include-table-file选项,表名被放在文件中时,不需要使用单引号。例如, 使用--include-table-file选项备份两个表。

Note: --include-table和--include-table-file选项不支持 模式名或表名包含双引号(”)、点号(.)、换行符(\n) 或空格符( )。

示例

备份”demo”数据库中的所有模式和表,包括Greenplum数据库全局系统对象:

备份”demo”数据库中除了”twitter”模式以外的所有模式和表:

仅备份”demo”数据库中的”twitter”模式:

备份”demo”数据库中的所有模式和表,包括Greenplum数据库全局系统对象,将所有备份文件复制到 /home/gpadmin/backup路径下。

该示例使用--include-schema和--exclude-table 备份指定模式,除了单独的一张表。

--exclude-schema选项不能与表过滤选项一起使用,例如--include-table。

gprestore

恢复由gpbackup创建的Greenplum数据库备份。默认gprestore 使用位于Greenplum Master主机数据目录下的元数据文件和DDL文件,使用存储于Segment主机上的表数据CSV 文件。

概要

描述

使用gprestore从备份集恢复时,必须包含--timestamp选项来指定 确切一个来自备份集的恢复时间值(YYYYMMDDHHMMSS)。如果在备份时指定了--backup-dir, 那么gprestore同样要指定--backup-dir来获取备份文件。

如果指定的是增量备份,那么还需要一个完全备份的文件集合(一个全备和所有需要的增量备份)。 gprestore会在开始恢复之前验证备份集合是可用的。

Important: 对于增量备份集,备份必须在单独设备上。例如,备份集的所有文件必须全部在 Data Domain系统。

有关增量备份的详细信息,请见使用gpbackup和gprestore创建增量备份

当从备份集恢复时,gprestore会将数据恢复到创建备份时指定的数据库。 如果目标数据库存在,并且数据库中存在该表,恢复操作会失败。如果目标数据库不存在,可以通过指定 --create-db选项来创建数据库。也可以通过指定--redirect-db 选项来将数据恢复到不同的数据库。

当恢复分区表的子分区时,分区表和数据会一同被恢复。例如,使用gpbackup的 --include-table-file选项创建了一个备份。恢复数据时会恢复创建分区表并 只将数据恢复到列表文件中指定的分区。

Greenplum数据库系统对象会自动包含在gpbackup备份集中,但是只有在用 gprestore进行恢复时指定--with-globals选项才会 进行恢复。相似的情况还有,如果备份时使用--with-stats选项备份了查询计划 统计信息,那么在使用gprestore进行恢复时必须指定--with-stats 才能对这部分数据进行恢复。默认情况下,只有备份集中的数据库对象会被恢复。

恢复操作的性能可以通过提高创建多个并行连接的方式来同时恢复多个表和元数据。默认gprestore 使用1个连接,但是我们可以通过--jobs选项来为大的恢复过程增加处理进程数。

当一个操作完成后,gprestore会返回一个状态码。详见 Return Codes

gprestore在恢复操作完成后可以发送邮件通知。可以指定发送邮件和接收邮件的 配置文件。详见配置邮件通知

Note: 该工具在系统内部采用SSH连接执行各项操作任务。在大型Greenplum集群、云部署或每台主机部署了大量的 segment实例时,可能会遇到超过主机最大授权连接数限制的情况。此时需要考虑更新SSH配置参数MaxStartups 以提高该限制。更多关于SSH配置的选项,请参考您的Linux分发版的SSH文档。

选项

--timestamp YYYYMMDDHHMMSS

必须。指定一个用来恢复gpbackup备份集的时间戳。默认gprestore 会尝试从Master主机的$MASTER_DATA_DIRECTORY/backups/YYYYMMDD/YYYYMMDDhhmmss/ 路径下定位时间戳对应的元数据文件,从每个Segment主机的/backups/YYYYMMDD/YYYYMMDDhhmmss/ 路径下定位CSV数据文件。

--backup-dir directory

可选。从指定的路径下找所有备份文件(元数据文件和数据文件)。必须指定directory 为一个绝对路径(不能是相对路径)。如果没有指定该选项,gprestore会尝试从Master主机的 $MASTER_DATA_DIRECTORY/backups/YYYYMMDD/YYYYMMDDhhmmss/ 路径下定位时间戳对应的元数据文件,从每个Segment主机的/backups/YYYYMMDD/YYYYMMDDhhmmss/ 路径下定位CSV数据文件。如果gpbackup操作指定了该选项,那么恢复时请同时指定该选项。

该选项不能和--plugin-config选项一起使用。

--create-db

可选。在恢复数据库对象元数据之前先创建数据库。

通过复制空的系统标准数据库template0来创建指定的数据库。

--data-only

可选。仅恢复gpbackup创建的表数据,不恢复创建数据库表的操作。该选项假定 数据库中已经存在对应的表。如果要恢复指定的集合,可以通过指定选项来包含表/模式或排除表/模式。 指定--with-stats选项来从备份集恢复表的统计信息。

备份集必须包含要被恢复的表数据。例如,gpbackup采用选项 --metadata-only备份的备份集不包含表数据,不能用来恢复数据。

如果要仅恢复数据库表,不恢复表里的数据,参见选项 --metadata-only

--debug

可选。显示操作期间的详细信息和调试日志。

--exclude-schema schema_name

可选。指定恢复操作期间要排除的数据库模式。可以多次指定以排除多个模式。该选项不能和 --include-schema或表过滤选项(例如:--include-table) 一起使用。

--exclude-table schema.table

可选。指定恢复操作期间要排除的表。指定的格式必须为.。 如果表名或模式名使用了非小写字母、数字或下划线,那改名字可以用双引号包裹。客户可以多次指定该选项。 如果表不在备份集中,恢复操作会失败。不能指定分区表的子分区。

该选项不能与--exclude-schema或表过滤选项(例如:--include-table) 一起使用。

--exclude-table-file file_name

可选。指定恢复期间要排除的表的列表文件。文件为text格式,并且每行都必须定义一个单独的表,格式为 .。文件不能包含多余的行。 如果表名或模式名使用了非小写字母、数字或下划线,那改名字可以用双引号包裹。客户可以多次指定该选项。 如果表不在备份集中,恢复操作会失败。不能指定分区表的子分区。

该选项不能与--exclude-schema或表过滤选项(例如:--include-table) 一起使用。

--include-schema schema_name

可选。指定要恢复的数据库模式。可以多次指定该选项以包含多个模式。如果指定了该选项,那定义的任何 模式都必须在备份集中。没在--include-schema选项中指定的所有模式都会被忽略。

如果指定的模式在目标数据库中存在,该工具会产生一个错误然后继续操作。如果被恢复的表在数据库中存在, 该工具会失败。

如果备份集在多个模式下存在依赖关系,那不能使用该选项。

更多信息请见过滤备份和恢复的内容

--include-table schema.table

可选。指定一个要恢复的表。格式必须为.。 如果任何表名或模式名使用非小写字母、数字或下划线,那么可以用双引号包裹名字。该选项可以多次指定。 不能指定分区表的子分区。

也可以指定一个有效的模式或视图。

如果指定了该选项,工具不会自动恢复依赖对象。必须指定需要的依赖对象。例如,如果恢复一个视图, 那么必须也恢复它对应的表。如果恢复的表使用到了一个序列,那么也必须恢复该序列。这些对应的对象 也必须都在备份集中存在。

不能将该选项与--include-schema或表过滤选项 (例如--exclude-table-file)一起使用。

--include-table-file file_name

可选。指定一个包含恢复表名的列表文件。每行代表一张单独的表,格式必须为 .。该文件不能包含多余的行。 如果表名或模式名使用了非小写字母、数字或下划线,那改名字可以用双引号包裹。客户可以多次指定该选项。 如果表不在备份集中,恢复操作会失败。不能指定分区表的子分区。

也可以指定一个有效的模式或视图。

如果指定了该选项,工具不会自动恢复依赖对象。必须指定需要的依赖对象。例如,如果恢复一个视图, 那么必须也恢复它对应的表。如果恢复的表使用到了一个序列,那么也必须恢复该序列。这些对应的对象 也必须都在备份集中存在。

如果使用--include-table-file选项,gprestore 不会创建表的角色或用户集合。工具会恢复表的索引和规则。触发器也会被恢复,但是Greenplum 目前不支持触发器。

更多信息请见过滤备份或恢复的内容

--jobs int

可选。指定恢复表数据和元数据的并行连接的数量。默认gprestore使用1个连接。 增加该参数会提高数据恢复的速度。

Note: 如果使用gpbackup —single-data-file选项合并表备份为每个Segment 节点1个单独的文件,那么不能在恢复过程中指定--jobs超过1来进行并行恢复。

--metadata-only

可选。从一个gpbackup创建的备份集中创建数据库表,不恢复数据。该选项 假设目标数据库中不存在这些表。要从备份集创建指定的表集合,可以通过指定对应的选项来选择或 排除相应的表或模式。指定选项--with-globals来恢复Greenplum数据库 系统对象。

备份集必须包含要恢复的表的DDL数据。例如,gpbackup选项--data-only 生成的备份集就不包含表的DDL信息。

创建完数据库表后再恢复表数据,请见选项 --data-only

--on-error-continue

可选。指定该选项以在创建数据库元数据(例如表、对象或函数)或恢复数据过程中出现SQL错误时, 忽略错误继续执行。如果有其他类型错误出现,工具会退出。工具会显示错误信息汇总并将错误信息写入到 gprestore日志文件,并继续恢复操作。

默认为第一次出现错误即退出。

--plugin-config config-file_location

指定gpbackup插件配置文件位置,它是一个YAML格式的文本文件。该文件包含 gprestore在恢复操作期间使用的插件的配置信息。

如果备份数据库时指定了--plugin-config选项,那么在从该备份集恢复 数据时也必须指定该配置文件。

该选项不能与--backup-dir同时使用。

有关存储插件应用的详细信息,请见 使用gpbackup存储插件

--quiet

可选。禁止任何非告警、非错误日志输出。

--redirect-db database_name

可选。恢复到指定的database_name,而不是备份时的默认数据库名。

--verbose

可选。显示恢复操作期间的详细日志信息。

--version

可选。打印版本号并退出。

--with-globals

可选。恢复备份集合中的Greenplum数据库系统对象,和其余数据库对象。详见备份或还原中包含的对象

--with-stats

可选。从备份集合恢复查询计划统计信息。

--help

显示在线帮助信息。

Return Codes

gprestore完成后会返回如下返回码之一

  • 0 – 成功完成恢复。
  • 1 – 恢复完成,没有严重错误。具体信息见日志文件。
  • 2 – 恢复失败,有严重错误。具体信息见日志文件。

示例

创建demo数据库并恢复备份集合中指定时间的所有表名和模式名:

恢复备份集到”demo2”数据库而不是默认备份的”demo”数据库:

恢复数据库全局对象和查询计划统计信息,而不是默认的全部数据:

使用创建在/home/gpadmin/backup下的文件恢复数据,创建8个并行连接:

仅恢复备份集中的”wikipedia”模式:

如果从增量备份集中恢复,所有需要的备份文件都必须对gprestore可用。例如, 以下时间戳指定增量备份集。20170514054532时增量备份集合的全备份。

以下gprestore命令指定时间戳20121114064330。时间戳为20120714095512和 20120914081205的增量备份和全量备份必须都能被恢复程序访问。

参考

https://www.bookstack.cn/read/greenplum-admin_guide-6.0-zh/8bcd3e7919a13d0d.md

https://www.bookstack.cn/read/greenplum-admin_guide-6.0-zh/33910b18fc3679d8.md

https://mp.weixin.qq.com/s/BS93K7Ht6SQn4ctJY5U2gw

【干货】Greenplum备份恢复工具gpbackup(中篇)

https://my.oschina.net/GreenplumCommunity/blog/5522420

标签:

头像

小麦苗

学习或考证,均可联系麦老师,请加微信db_bao或QQ646634621

您可能还喜欢...

发表回复

嘿,我是小麦,需要帮助随时找我哦
  • 18509239930
  • 个人微信

  • 麦老师QQ聊天
  • 个人邮箱
  • 点击加入QQ群
  • 个人微店

  • 回到顶部
返回顶部