人大金仓分析型数据库备份和恢复(三)

本文详细介绍了如何使用gpbackup进行数据库备份,包括schema和表级别的过滤,以及如何利用--leaf-partition-data选项备份叶子分区。同时,文章概述了gprestore的过滤功能,包括还原过程中的限制和注意事项。
摘要由CSDN通过智能技术生成

目录

备份或恢复过滤内容

过滤叶子分区

使用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的,<schema-name>.<table-name>。 可以多次指定各个表过滤选项。 但是,--include-table和--exclude-table不能同时用于同一命令。

        可以在文本文件中创建指定的表名称列表。 列出文件中的表时,文本文件中的每一行都必须使用格式<schema-name>.<table-name>定义单个表。 该文件不得包含尾随行。 例如:

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

        备份叶子分区时,将备份叶子分区数据以及整个分区表的元数据。

使用gprestore过滤

        使用gpbackup创建备份集后, 可以使用gprestore的--include-schema和--include-table-file选项过滤要从备份集还原的schema和表。 这些选项的工作方式与其gpbackup对应方式相同,但具有以下限制:

  • 尝试还原的表不能存在于数据库中
  • 如果尝试还原备份集中不存在的schema或表,则gprestore不会执行
  • 如果使用--include-schema选项,则gprestore无法还原对多个schema具有依赖性的对象
  • 如果使用--include-table-file选项,则gprestore不会创建角色或设置表的所有者。 该工具恢复表索引和规则。 触发器也被恢复,但数据库不支持
  • 使用--include-table-file指定的文件不能包含叶子分区名称,因为在使用gpbackup指定此选项时可以使用该名称。 如果在备份集中指定了叶子分区,请指定分区表以还原叶子分区数据。
    还原包含来自分区表的某些叶子分区的数据的备份集时,将恢复分区表以及叶子分区的数据

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值