gpbackup

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

概要

  1. gpbackup --dbname database_name
  2. [--backup-dir directory]
  3. [--compression-level level]
  4. [--data-only]
  5. [--debug]
  6. [--exclude-schema schema_name]
  7. [--exclude-table schema.table]
  8. [--exclude-table-file file_name]
  9. [--include-schema schema_name]
  10. [--include-table schema.table]
  11. [--include-table-file file_name]
  12. [--incremental [--from-timestamp backup-timestamp]]
  13. [--jobs int]
  14. [--leaf-partition-data]
  15. [--metadata-only]
  16. [--no-compression]
  17. [--plugin-config config_file_location]
  18. [--quiet]
  19. [--single-data-file]
  20. [--verbose]
  21. [--version]
  22. [--with-stats]
  23. gpbackup --help

描述

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选项同时使用。

--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选项时,名字包含大写字母或特殊字符时,名字必须被 单引号包裹。

  1. gpbackup --dbname test --include-table 'my#1schema'.'my_$42_Table'

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

  1. my#1schema.my_$42_Table
  2. my#1schema.my_$590_Table

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

示例

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

  1. $ gpbackup --dbname demo

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

  1. $ gpbackup --dbname demo --exclude-schema twitter

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

  1. $ gpbackup --dbname demo --include-schema twitter

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

  1. $ gpbackup --dbname demo --with-stats --backup-dir /home/gpadmin/backup

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

  1. $ gpbackup --dbname demo --include-schema mydata --exclude-table mydata.addresses

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

另见

gprestore使用gpbackup和gprestore并行备份使用带有gpbackup和gprestore的S3存储插件