目录
备份或恢复过滤内容
过滤叶子分区
使用gprestore过滤
gpbackup备份指定数据库中的所有schema和表,除非您使用schema级别或表级别过滤器选项排除或包含单个schema或表对象。
schema级别选项是--include-schema或--exclude-schema命令行选项到gpbackup。 例如,如果“demo”数据库仅包含两个schema “wikipedia”和“twitter”,则以下两个命令仅备份“wikipedia” schema:
$ gpbackup --dbname demo --include-schema wikipedia
$ gpbackup --dbname demo --exclude-schema twitter
可以在gpbackup中包含多个--include-schema选项,或多个--exclude-schema选项。 例如:
$ gpbackup --dbname demo --include-schema wikipedia --include-schema twitter
要筛选包含在备份集中的表或从备份集中排除表,请使用--include-table选项或--exclude-table选项指定各个表。 该表必须是限定schema的,
可以在文本文件中创建指定的表名称列表。 列出文件中的表时,文本文件中的每一行都必须使用格式
wikipedia.articles
twitter.message
创建文件后,您可以使用gpbackup选项--include-table-file或--exclude-table-file来包含或排除表。例如:
$ gpbackup --dbname demo --include-table-file /home/mppadmin/table-list.txt
可以将-include schema与--exclude-table或--exclude-table-file结合使用以进行备份。 此示例使用--include-schema和--exclude-table来备份除单个表之外的schema。
$ gpbackup --dbname demo --include-schema mydata --exclude-table mydata.addresses
不能将--include-schema与--include-table或--include-table-file结合使用, 并且不能将--exclude-schema与任何表过滤选项(如--exclude-table或--include-table)结合使用。使用--include-table或--include-table-file时,不会自动备份或还原依赖对象,必须显式指定所需的依赖对象。 例如,如果备份或还原视图,则还必须指定视图使用的表。 如果备份或还原使用序列的表,则还必须指定序列。
默认情况下,gpbackup为节点上的每个表创建一个文件。 您可以指定--leaf-partition-data选项,以便为分区表的每个叶子分区创建一个数据文件,而不是单个文件。 还可以通过在包含的文本文件中列出叶子分区名称来过滤备份特定叶子分区。 例如,考虑使用以下语句创建的表:
demo=# CREATE TABLE sales (id int, date date, amt decimal(10,2))
DISTRIBUTED BY (id)
PARTITION BY RANGE (date)
( PARTITION Jan17 START (date '2017-01-01') INCLUSIVE ,
PARTITION Feb17 START (date '2017-02-01') INCLUSIVE ,
PARTITION Mar17 START (date '2017-03-01') INCLUSIVE ,
PARTITION Apr17 START (date '2017-04-01') INCLUSIVE ,
PARTITION May17 START (date '2017-05-01') INCLUSIVE ,
PARTITION Jun17 START (date '2017-06-01') INCLUSIVE ,
PARTITION Jul17 START (date '2017-07-01') INCLUSIVE ,
PARTITION Aug17 START (date '2017-08-01') INCLUSIVE ,
PARTITION Sep17 START (date '2017-09-01') INCLUSIVE ,
PARTITION Oct17 START (date '2017-10-01') INCLUSIVE ,
PARTITION Nov17 START (date '2017-11-01') INCLUSIVE ,
PARTITION Dec17 START (date '2017-12-01') INCLUSIVE
END (date '2018-01-01') EXCLUSIVE );
NOTICE: CREATE TABLE will create partition "sales_1_prt_jan17" for table "sales"
NOTICE: CREATE TABLE will create partition "sales_1_prt_feb17" for table "sales"
NOTICE: CREATE TABLE will create partition "sales_1_prt_mar17" for table "sales"
NOTICE: CREATE TABLE will create partition "sales_1_prt_apr17" for table "sales"
NOTICE: CREATE TABLE will create partition "sales_1_prt_may17" for table "sales"
NOTICE: CREATE TABLE will create partition "sales_1_prt_jun17" for table "sales"
NOTICE: CREATE TABLE will create partition "sales_1_prt_jul17" for table "sales"
NOTICE: CREATE TABLE will create partition "sales_1_prt_aug17" for table "sales"
NOTICE: CREATE TABLE will create partition "sales_1_prt_sep17" for table "sales"
NOTICE: CREATE TABLE will create partition "sales_1_prt_oct17" for table "sales"
NOTICE: CREATE TABLE will create partition "sales_1_prt_nov17" for table "sales"
NOTICE: CREATE TABLE will create partition "sales_1_prt_dec17" for table "sales"
CREATE TABLE
要仅备份一年中最后一个季度的数据,首先要创建一个文本文件,列出那些叶子分区名称而不是完整的表名称:
public.sales_1_prt_oct17
public.sales_1_prt_nov17
public.sales_1_prt_dec17
然后使用--include-table-file选项指定文件,以便为每个叶子分区生成一个数据文件:
$ gpbackup --dbname demo --include-table-file last-quarter.txt --leaf-partition-data
指定--leaf-partition-data时,gpbackup在备份分区表时为每个叶子分区生成一个数据文件。例如,此命令为每个叶子分区生成一个数据文件:
$ gpbackup --dbname demo --include-table public.sales --leaf-partition-data
备份叶子分区时,将备份叶子分区数据以及整个分区表的元数据。
使用gpbackup创建备份集后, 可以使用gprestore的--include-schema和--include-table-file选项过滤要从备份集还原的schema和表。 这些选项的工作方式与其gpbackup对应方式相同,但具有以下限制: