gpcrondump

gpcrondump

将一个数据库写出到SQL脚本文件。这些脚本文件可以被gpdbrestore工具用来恢复数据库。gpcrondump工具可以直接调用,或者从一个crontab项调用。

概要

gpcrondump -x database_name 
   [-s schema | -S schema | -t schema.table | -T schema.table] 
   [--table-file=filename | --exclude-table-file=filename] 
   [--schema-file=filename | --exclude-schema-file=filename]
   [--dump-stats] 
   [-u backup_directory] [-R post_dump_script] [--incremental] 
   [-K timestamp [--list-backup-files] ]
   [--prefix prefix_string [--list-filter-tables]
   [-c [--cleanup-date yyyymmdd | --cleanup-total n] ]
   [-z] [-r] 
   [-f free_space_percent] [-b] [-h] [-H] [-j | -k] [-g] [-G] [-C] 
   [-d master_data_directory] [-B parallel_processes] [-a] [-q]
   [-y reportfile] [-l logfile_directory]
   [--email-file path_to_file] [-v]
   { [-E encoding] [--inserts | --column-inserts] [--oids] 
     [--no-owner | --use-set-session-authorization] [--no-privileges] 
     [--rsyncable]
     { [--ddboost [--replicate --max-streams max_IO_streams]
     [--ddboost-skip-ping] [--ddboost-storage-unit=unit-ID]] } | 
     { [--netbackup-service-host netbackup_server
     --netbackup-policy netbackup_policy
     --netbackup-schedule netbackup_schedule [--netbackup-block-size size] ]
     [--netbackup-keyword keyword] ] } }

gpcrondump --ddboost-host ddboost_hostname
   [--ddboost-host ddboost_hostname ... ]
   --ddboost-user ddboost_user --ddboost-backupdir backup_directory 
   [--ddboost-remote] [--ddboost-skip-ping]
   [--ddboost-storage-unit=unit-ID] 

gpcrondump --ddboost-show-config [--remote]

gpcrondump --ddboost-config-remove

gpcrondump -o [--cleanup-date yyyymmdd | --cleanup-total n] 

gpcrondump -? 

gpcrondump --version

描述

gpcrondump工具将一个数据库的内容转储到SQL脚本文件中,然后这些脚本文件可以在日后被gpdbrestore用来恢复数据库模式和用户数据。在备份操作期间,用户仍将对数据库有完全的访问。

默认情况下,转储文件被创建在其相应的Master和Segment数据库中一个名为db_dumps/YYYYMMDD的目录中。数据转储文件默认会使用gzip压缩。

该工具为服务器配置参数gp_default_storage_optionsoptimizersearch_path备份数据库级别的设置。当用户使用gpdbrestore恢复数据库并且指定-e选项以在执行恢复操作之前创建空目标数据库时,这些设置会被恢复。

在备份操作完成后,该工具会在gpcrondump状态文件中检查SQL执行错误并且在找到错误时显示警告。备份状态文件的默认位置在db_dumps/date/目录中。

gpcrondump允许用户使用cron(UNIX操作系统的一种调度工具)来调度Greenplum数据库的例行备份。调用gpcrondump的Cron作业应该在Master主机上调度。

警告: 在同时运行ALTER TABLE的情况下用gpcrondump备份数据库可能导致gpcrondump失败。

在同时运行DDL命令时用gpcrondump备份数据库可能导致锁问题。用户可能会看到DDL命令或者gpcrondump在等待获得锁。

关于数据库、方案和表的名称

用户可以指定包含这些特殊字符的数据库名、方案名和表名。

" ' ` ~ # $ % ^ & * ( ) _ - + [ ] { } > < \ | ; : / ?以及空格字符。
注意: 不支持字符!、逗号(,)以及点号(.)。此外,制表符(\t)以及新行(\n)字符也不被支持。

当名称包含特殊字符并且在命令行上被指定时,命令必须被封闭在双引号(")中。对于不包含特殊字符的名称,双引号是可选的。例如,在命令行上使用"my#1schema".mytable或者"my#1schema"."mytable"都是有效的。在名称内,这些特殊字符必须被使用反斜线(\)转义: " ` $ \

当名称在一个输入文件中指定时,名称不能被封闭在双引号中。特殊字符不需要转义。

备份文件名

该工具用这种文件名格式创建备份文件。

prefix_gp_dump_content_dbid_timestamp
contentdbid是Greenplum数据库分配给Segment实例的标识符。关于标识符的信息,请见Greenplum数据库参考指南中的Greenplum数据库系统目录表gp_id
使用Data Domain Boost
gpcrondump工具可以被用来调度Data Domain Boost (DD Boost)备份操作。该工具也被用来为DD Boost设置、更改或者移除一次性证书以及存储单元ID。gpcrondumpgpdbrestore以及gpmfr工具使用DD Boost证书来访问Data Domain系统。DD Boost信息被存储在这些文件中。
  • DDBOOST_CONFIGgpdbrestoregpcrondump用于对Data Domain系统的备份和恢复操作。当用户用--ddboost-host选项指定Data Domain信息时,gpdbrestore工具会创建或者更新该文件。
  • DDBOOST_MFR_CONFIGgpmfr用于对远程Data Domain系统的远程复制操作。当用户用--ddboost-host选项以及--ddboost-remote选项指定Data Domain信息时,gpdbrestore工具会创建或者更新该文件。

这些配置文件被创建在Greenplum数据库的Master和Segment主机上当前用户(gpadmin)的主目录中。 路径和文件名不能被更改。

当用户使用DD Boost执行备份操作时,备份会使用Data Domain系统上的一个存储单元。在用户执行这些操作时,可以指定该存储单元的ID:

  • 当用户用--ddboost-host选项设置DD Boost证书时。如果用户指定--ddboost-storage-unit选项,存储单元ID被写入到Greenplum数据库的DD Boost配置文件DDBOOST_CONFIG中。如果没有指定存储单元ID,默认值是GPDB
  • 当用户用--ddboost选项执行一次备份操作时。当用户指定--ddboost-storage-unit选项时,该工具把指定的Data Domain存储单元用于该操作。配置文件中的值不会被更改。

在执行一次完全备份操作(不是增量备份)操作时,如果存储单元不存在,会在Data Domain系统上创建它。

如果指定这些gpcrondump选项,则不会创建存储单元: --incremental--list-backup-file--list-filter-tables-o或者 --ddboost-config-remove

使用gpcrondump的选项--ddboost-show-config可以从Master配置文件中显示当前的DD Boost配置信息。指定--remote选项可以为远程Data Domain系统显示配置信息。

关于将DD Boost和Data Domain系统用于Greenplum数据库的信息,请见Greenplum数据库管理员指南中的“备份和恢复数据库”部分。

有关返回代码
下面是gpcrondump返回的代码的列表。
  • 0 – 转储完成,没有发生问题
  • 1 – 转储完成,但是生成了一个或者多个警告
  • 2 – 发生致命错误,转储失败
Email通知

要让gpcrondump在一次备份操作完成后发送状态Email通知,用户必须把一个名为mail_contacts的文件放在Greenplum超级用户(gpadmin)的主目录或者gpcrondump工具所在的目录($GPHOME/bin)中。这个文件应该每行包含一个Email地址。如果gpcrondump在两个地方都无法定位mail_contacts文件,它将发出一个警告。如果两个位置都有mail_contacts文件,那么$HOME中的那个优先。

用户可以定制在一个数据库的备份完成后gpcrondump发送的Email通知的主题和From行。用户可以用一个YAML文件的位置指定选项--email-file,该文件中包含gpcrondump使用的Email主题和From行。有关YAML文件格式的信息,请见自定Email的文件格式.

注意: UNIX的邮件工具必须在Greenplum数据库主机上运行并且必须被配置为允许Greenplum的超级用户(gpadmin)发送Email。
限制

对于增量备份集合,一个完全备份以及相关的增量备份,该备份集必须位于一个单一的设备上。例如,一个备份集必须全都在一个文件系统上。

对于外部表,表定义会被备份,不过数据不会被备份。如果分区表的叶子子分区是可读外部表,该叶子子分区的数据不会被备份。

选项

-a(不提示)
不提示用户确认。
-b(绕过磁盘空间检查)
绕过磁盘空间检查。默认是检查可用的磁盘空间,除非指定--ddboost。在使用Data Domain Boost时,这个选项总是被启用。
注意: 绕过磁盘空间检查会生成警告消息。如果有警告消息,如果转储成功,gpcrondump的返回代码是1(如果转储失败,所有情况下返回代码都是2)。
-B parallel_processes
转储前后验证时并行检查的Segment数量。如果没有指定,根据需要转储的Segment实例的数量,该工具将启动最多60个并行进程。
-c (先清除旧转储文件)
指定这个选项会在执行备份前删除旧的备份。在db_dumps目录中,名称是最旧日期的目录会被删除。如果目录名是当前日期,该目录不会被删除。默认是不删除旧的备份文件。
被删除的目录可能包含来自于一个或者更多备份的文件。
警告: 在使用这个选项前,确保执行恢复所需的增量备份不会被删除。gpdbrestore工具的选项--list-backup会列出执行一次备份所需的备份集。
如果指定--ddboost,只有在Data Domain Boost上的旧文件会被删除。
用户可以指定选项--cleanup-date或者--cleanup-total来指定要删除的备份集。
这个选项不被-u选项支持。
-C (恢复前清除目录)
在恢复数据库对象之前清除catalog方案。gpcrondump在创建备份文件时在SQL脚本文件中增加DROP命令。当这些脚本文件被gpdbrestore工具用来恢复数据库对象时,DROP会在恢复数据库对象之前先移除已经存在的对象。
如果指定了--incremental并且文件在NFS存储上,则不支持-C选项。如果-C选项被指定,这些数据库对象也不会被删除。
--cleanup-date=yyyymmdd
为日期yyyy-mm-dd移除备份集。日期格式为yyyymmdd。如果在那个日期有多个备份集被创建,则那个日期的所有备份集都会被删除。如果没有找到备份集,gpcrondump会返回一个警告消息,并且不删除任何备份集。如果-c选项被指定,备份处理会继续。
只与-c-o选项一起时有效。
警告: 在使用这个选项之前,要确保执行恢复所需的增量备份不被删除。gpdbrestore工具的选项--list-backup会列出执行一次备份所需的备份集。
--cleanup-total=n
基于备份时间戳移除n个最老的备份集。
如果有少于n个备份集,gpcrondump会返回一个警告消息并且不会删除任何备份集。如果-c选项被指定,备份处理会继续。
只与-c-o选项一起时有效。
警告: 在使用这个选项之前,要确保执行恢复所需的增量备份不被删除。gpdbrestore工具的选项--list-backup会列出执行一次备份所需的备份集。
--column-inserts
将数据转储为带有列名的INSERT命令。
如果指定--incremental,则不支持这个选项。
-d master_data_directory
Master主机的数据目录。如果没有指定,将使用为$MASTER_DATA_DIRECTORY设置的值。
--ddboost [--replicate --max-streams max_IO_streams ] [--ddboost-skip-ping]
为这次备份使用Data Domain Boost。在使用Data Domain Boost之前,用--ddboost-host选项设置好Data Domain Boost证书。此外,可参考使用Data Domain Boost

如果指定--ddboost,推荐使用-z选项(非压缩)。

备份压缩(默认打开)应该用-z选项关闭。Data Domain Boost在把备份数据发送到Data Domain系统之前将删除其中的重复并且压缩备份数据。

--replicate --max-streamsmax_IO_streams是可选的。如果用户指定这个选项,gpcrondump会在主Data Domain服务器上的备份完成后把备份复制到远程Data Domain服务器。 max_IO_streams指定从主Data Domain服务器复制备份集到远程Data Domain服务器时可以使用的Data Domain I/O流的最大数量。

如果用gpcrondump复制备份花费很长时间并且阻止其他备份发生,用户可以使用gpmfr复制备份。每刻只能有一个gpcrondump实例运行。在gpcrondump正在被用于复制备份时,它不能被用来创建备份。

用户可以运行一种同时写到本地磁盘和Data Domain的混合备份。如果用户想在其本地磁盘上使用不是默认的备份目录,可使用-u选项。增量备份不支持混合备份。更多有关混合备份和Data Domain Boost的信息,请见Greenplum数据库管理员指南中的“备份和恢复数据库”。

重要: 不要把Greenplum数据库的默认备份选项用于Data Domain Boost。

要最大化Data Domain删除重复的效益,保留至少30日的备份。

注意: 如果--ddboost被指定,-b-c-f-G-g-R-u选项会改变。详见各选项。
如果指定NetBackup选项,则DDBoost备份选项不受支持。
--ddboost-host ddboost_hostname [--ddboost-host ddboost_hostname ...]
--ddboost-user ddboost_user --ddboost-backupdir backup_directory
[--ddboost-remote] [--ddboost-skip-ping]
设置Data Domain Boost证书。不要把这个选项与任何其他gpcrondump选项组合在一起。不要只输入这个选项的一部分。
ddboost_hostname是主机的IP地址(或者与该IP相关的主机名)。这里有30个字符的限制。如果用户使用两个或者更多网络连接连接到Data Domain系统,用--ddboost-host选项指定每个连接。
ddboost_user是Data Domain Boost的用户名。这里有30个字符的限制。
backup_directory是Data Domain系统上备份文件、配置文件以及全局对象的位置。该系统上的位置是GPDB/backup_directory
--ddboost-remote是可选的。它表示配置参数是用于备份复制和受Data Domain Boost管理的文件复制的远程Data Domain系统的。远程Data Domain系统的证书必须用--replicate选项或者gpmfr管理工具配置。
例如:
gpcrondump --ddboost-host 192.0.2.230 --ddboost-user ddboostusername --ddboost-backupdir gp_production
注意: 在设置Data Domain Boost证书时,如果对于被用于备份复制的Data Domain系统指定了--ddboost-remote选项,则--ddboost-backupdir选项会被忽略。--ddboost-backupdir值适用于做备份操作的Data Domain系统,而不适用于做备份复制的Data Domain系统。
在用这些选项运行gpcrondump之后,系统会验证主机和用户名上的限制并且提示要求Data Domain Boost口令。在提示时输入口令,口令不会在屏幕上回显。在口令上有40个字符的限制,口令可以包括小写字母(a-z)、大写字母(A-Z)、数字(0-9)以及特殊字符($、%、#、+等)。
系统会验证口令。在口令被验证之后,系统会在用户的主目录中创建加密的DDBOOST_CONFIG文件。
在这个例子中,--ddboost-backupdir 选项指定Data Domain Storage Unit GPDB中的备份目录gp_production
注意: 如果多于一个操作系统用户使用Data Domain Boost进行备份和恢复操作,则为每个用户重复这种配置过程。
重要: 如上所述,在使用--ddboost选项运行任何Data Domain Boost备份之前,先设置Data Domain Boost证书。
--ddboost-config-remove
从系统中的Master和所有Segment移除所有Data Domain Boost证书。不要同时输入这一选项和任何其他gpcrondump选项。
--ddboost-show-config [--remote]
可选。显示Data Domain服务器的DD Boost配置信息。在指定这个选项时同时加上--remote选项可以显示远程Data Domain服务器的配置文件信息。不会执行备份。
--ddboost-skip-ping
指定这个选项可以跳过对Data Domain系统的ping操作。在使用Data Domain系统时,ping被用来确保该Data Domain系统可达。如果该Data Domain系统被配置为阻塞ICMP的ping探测,可以指定这个选项。
--ddboost-storage-unit=unit-ID
可选。为Data Domain系统指定一个有效的存储单元名用于备份和恢复操作。默认的存储单元ID是GPDB。可见使用Data Domain Boost
  • 在指定这个选项时加上--ddboost-host选项可以在DD Boost证书文件中创建或者更新存储单元ID。
  • 指定这个选项时加上--ddboost选项可以在执行备份操作时覆盖DD Boost证书文件中的存储单元ID。
在执行一次完全备份操作(不是增量备份)时,如果存储单元在Data Domain系统中不存在,则会在Data Domain系统上创建它。
复制操作在本地和远程Data Domain系统上都使用相同的存储单元ID。
--dump-stats
指定这个选项可以备份数据库统计信息。数据被写入到一个SQL文件,并且可以被手工或者用gpdbrestore工具恢复。
统计信息被写入在Master数据目录中的db_dumps/YYYYMMDD/prefix_string_gp_statistics_-1_1_timestamp
如果在指定这个选项时还指定了包括或者排除表或方案的选项,工具只会为备份的表备份统计信息。
-E encoding
转储数据的字符集编码。默认为被转储数据库的编码。受支持的字符集列表请见Greenplum数据库参考指南
-email-file path_to_file
指定包含自定义主题和From行的YAML文件的完全限定位置,该文件在gpcrondump发送关于备份数据库的通知Email时使用。
关于YAML文件的格式信息,请见自定义Email的文件格式
-f free_space_percent
在检查是否有足够空闲磁盘空间创建转储文件时,指定在转储完成后应该剩余的空闲磁盘空间的百分数。默认是10%。

如果指定--ddboost或者--incremental,则不支持这个选项。

-g (拷贝配置文件)
保护Master和Segment配置文件postgresql.confpg_ident.conf以及pg_hba.conf的一份拷贝。这些配置文件被转储到Master或者Segment数据目录的db_dumps/YYYYMMDD/config_files_timestamp.tar中。
如果--ddboost被指定,当Data Domain Boost证书被设置时,备份会被放置在默认存储单元上--ddboost-backupdir指定的目录中。
-G (转储全局对象)
备份不与任何特定方案或表相关的数据库元数据信息,例如角色和表空间。全局对象被转储到Master数据目录的db_dumps/YYYYMMDD/prefix_string_gp_global_-1_1_timestamp中。
如果--ddboost被指定,当Data Domain Boost证书被设置时,备份会被放置在默认存储单元上--ddboost-backupdir指定的目录中。
-h (记录转储细节)
-x选项提供的数据库中的数据库表public.gpcrondump_history中记录数据库转储的细节。如果该表还不存在,gpcrondump工具将会创建它。public方案必须在该数据库中存在,这样gpcrondump才能够创建public.gpcrondump_history表。默认是记录数据库转储细节。
这个选项将在未来的发行中被弃用。
-H (禁用对转储细节的记录)
禁止在-x选项提供的数据库中的数据库表public.gpcrondump_history中记录数据库转储的细节。如果没有指定,该工具将创建/更新历史表。-H选项不能与-h选项一起被选用。
注意: gpcrondump工具默认创建public.gpcrondump_history表。如果public方案已经被从数据库中删除,用户必须指定-H选项防止gpcrondump在尝试创建该表时返回错误。
--incremental (备份对追加优化表的更改)
增加一个增量备份到备份集。在执行一次增量备份时,先于增量备份被创建的完全备份集必须可用。完全备份集包括下列备份文件:
  • 当前增量备份之前的最后一次完全备份
  • 在该完全备份和当前增量备份之间所有被创建的增量备份

增量备份类似于完全备份,除了对于追加优化表(包括列存表)之外。如果在最后一次备份之后,只有下列操作在追加优化表上执行,则追加优化表会被备份。

ALTER TABLE 
INSERT 
DELETE 
UPDATE 
TRUNCATE 
DROP然后重新创建表

对于分区的追加优化表,只有改变的表分区会被备份。

在包括完全备份和增量备份的备份集中-u选项的使用必须一致。如果用户对完全备份使用-u选项,用户在创建属于包括该完全备份的备份集的增量备份时,也必须使用-u选项。

用户可以为数据库表的完全备份集创建增量备份。在用户创建完全备份时,指定--prefix选项来标识该备份。要在完全备份中包括一组表,可使用-t选项或者--table-file选项。要排除一组表,可使用-T选项或者--exclude-table-file选项。更多有关该选项的使用信息,请见该选项的描述。

要基于表集合的完全备份创建增量备份,指定选项--incremental并且用创建完全备份时指定的字符串指定--prefix选项。增量备份会被限制于完全备份中的表。

警告: gpcrondump在执行增量备份之前不会检查可用的磁盘空间。
重要: 增量备份集、完全备份以及相关的增量备份必须位于一个单一设备上。例如,一个备份集中的所有备份必须全部在一个文件系统上或者必须全部在一个Data Domain系统上。
--inserts
把数据转储为INSERT而不是COPY命令。
如果指定--incremental,则不支持这个选项。
-j (vacuum before dump)
在转储开始前运行VACUUM
-K timestamp [--list-backup-files]
指定在创建备份时要使用的timestamptimestamp是14位字符串,它以格式yyyymmddhhmmss指定日期和时间。该日期被用于备份目录名。日期和时间被用在备份文件名中。如果没有指定-K timestamp,会基于系统时间生成一个时间戳。
在将一个备份加入到备份集中时,如果timestamp没有指定一个比集合中所有其他备份更近的日期和时间,gpcrondump会返回一个错误。
--list-backup-files是可选的。当用户同时指定这个选项和-K timestamp选项时,gpcrondump不会执行备份。gpcrondump会创建两个文本文件,它们包含当gpcrondump备份Greenplum数据库时将被创建的文件名。这些文本文件会被创建在和备份文件相同的位置。
文件名使用-K timestamp选项指定的timestamp,并且具有后缀_pipes_regular_files。例如:
gp_dump_20130514093000_pipes
gp_dump_20130514093000_regular_files
_pipes文件包含可以被创建为命名管道的文件名的列表。当gpcrondump执行一次备份时,备份文件将被产生到这些命名管道中。_regular_files文件包含必须保持为普通文件的备份文件的列表。gpcrondumpgpdbrestore在备份和恢复操作期间使用这些普通文件中的信息。要备份Greenplum数据库备份文件的一个完整集合,在备份作业完成后,_regular_files文件中列出的文件也必须被备份。
要把命名管道用于备份,在运行gpcrondump之前,用户需要在所有Greenplum数据库主机上创建命名管道并且让它们可写。
如果指定--ddboost,则不支持-K timestamp [--list-backup-files]
-k (vacuum after dump)
在转储被成功完成后,运行VACUUM
-l logfile_directory
写入日志文件的目录。默认为~/gpAdminLogs
--netbackup-block-size size
指定数据被传输到Veritas NetBackup服务器的块尺寸(以字节为单位)。默认是512字节。
如果DDBoost备份选项被指定,则不支持NetBackup选项。
--netbackup-keyword keyword
为被传输到Veritas NetBackup服务器的备份指定一个keyword 。NetBackup会为该备份创建的NetBackup .img文件增加keyword属性以及指定keyword值。
这个参数的最大长度是127字符。
如果指定DDBoost备份选项,则不支持NetBackup选项。
--netbackup-policy netbackup_policy
为备份Greenplum数据库创建的NetBackup策略的名称。
如果指定DDBoost备份选项,则不支持NetBackup选项。
这个参数的最大长度是127字符。
--netbackup-service-host netbackup_server
在备份到NetBackup时,Greenplum数据库连接到的NetBackup主服务器。
如果指定DDBoost备份选项,则不支持NetBackup选项。
这个参数的最大长度是127字符。
--netbackup-schedule netbackup_schedule
为备份Greenplum数据库创建的NetBackup调度的名称。
如果指定DDBoost备份选项,则不支持NetBackup选项。
这个参数的最大长度是127字符。
--no-owner
不输出命令设置对象拥有关系。
--no-privileges
不输出命令设置对象特权(GRANT/REVOKE命令)。
-o (仅清除旧的转储文件)
仅清除旧的转储文件但不运行转储。这将移除最旧的转储目录,除非它就是当前日期的转储目录。那个目录中所有的转储集也将被移除。
警告: 在使用这个选项之前,要确保执行恢复所需的增量备份不被删除。gpdbrestore工具的选项--list-backup会列出执行一次备份所需的备份集。
如果--ddboost被指定,仅删除Data Domain Boost上的旧文件。
用户可以用选项--cleanup-date--cleanup-total来指定要删除的备份集。
如果--incremental被指定,则不支持这个选项。
--oids
在转储数据中包括对象标识符(OID)。
如果--incremental被指定,则不支持这个选项。
--prefix prefix_string [--list-filter-tables]
在备份期间创建的所有的备份文件名前面加上prefix_string以及一个下划线字符(_)。
--list-filter-tables是可选的。当用户同时指定这两个选项时,gpcrondump不执行备份。对于gpcrondump创建的由prefix-string标识的完全备份,该备份包括的表和排除的表会被列出。如果用户指定--list-filter-tables选项,则用户还必须指定--incremental选项。
如果--ddboost被指定,则不支持 --prefixprefix_string [--list-filter-tables]
-q (无屏幕输出)
运行在静默模式中。命令输出不显示在屏幕上,但仍将被写入到日志文件。
-r (失败时回滚)
如果检测到失败,回滚转储文件(删除部分转储)。默认是不会滚。
注意: 如果--ddboost被指定,则不支持这个选项。
-R post_dump_script
在成功的转储操作之后要运行的一个脚本的绝对路径。例如,用户可能想要一个脚本把完成的转储文件移动到备份主机上。这个脚本在Master和所有Segment主机上必须位于相同的位置。
--rsyncable
传递--rsyncable标志给gzip工具以便基于压缩期间的输入不定期同步输出。这种同步在大部分情况下会让文件尺寸增加不到1%。当这个标志被传递时,rsync(1)程序可以更加有效地同步压缩文件。gunzip工具无法区分用这个选项和不用这个选项创建的压缩文件。
-s schema_name
转储数据库中所有受指定方案限定的表。-s选项可以被指定多次。不支持指定系统目录方案。如果用户想要指定多个方案,还可以使用--schema-file=filename选项以免超过最大记号限制。
只有表集合或者方案集合可以被指定。例如,-s选项不能和-t选项一起被指定。
如果--incremental被指定,则不支持这个选项。
-S schema_name
要从数据库转储中排除的一个方案名。-S选项可以被指定多次。如果用户想要指定多个方案,还可以使用--exclude-schema-file=filename选项以免超过最大记号限制。
只有表集合或者方案集合可以被指定。例如,这个选项不能和-t选项一起被指定。
如果--incremental被指定,则不支持这个选项。
-t schema.table_name
仅转储这个数据库中被提及的表。-t选项可以被指定多次。如果用户想要指定多个表,还可以使用--table-file=filename选项以免超过最大记号限制。
只有表集合或者方案集合可以被指定。例如,这个选项不能和-s选项一起被指定。
如果--incremental被指定,则不支持这个选项。
-T schema.table_name
要从数据库转储中排除的一个表名。-T选项可以被指定多次。如果用户想要指定多个表,还可以使用--exclude-table-file=filename选项以免超过最大记号限制。
只有表集合或者方案集合可以被指定。例如,这个选项不能和-s选项一起被指定。
如果--incremental被指定,则不支持这个选项。
--exclude-schema-file=filename
从数据库转储中排除所有受filename中列举的方案限定的表。文件filename包含任意数量的方案,每行列一个。
只有表集合或者方案集合可以被指定。例如,这个选项不能和-t选项一起被指定。
如果--incremental被指定,则不支持这个选项。
--exclude-table-file=filename
从数据库转储中排除所有列在filename中的表。文件filename包含任意数量的表,每行列一个。
只有表集合或者方案集合可以被指定。例如,这个选项不能和-s选项一起被指定。
如果--incremental被指定,则不支持这个选项。
--schema-file=filename
仅转储受列在filename中的方案限定的表。文件filename包含任意数量的方案,每行列一个。
只有表集合或者方案集合可以被指定。例如,这个选项不能和-t选项一起被指定。
如果--incremental被指定,则不支持这个选项。
--table-file=filename
仅转储列在filename中的表。文件filename包含任意数量的表,每行列一个。
只有表集合或者方案集合可以被指定。例如,这个选项不能和-s选项一起被指定。
如果--incremental被指定,则不支持这个选项。
-u backup_directory
指定备份文件在每台主机上存放位置的绝对路径。如果路径不存在,可能的情况下它将被创建。如果没有指定,默认为被备份的每个实例的数据目录。如果每台Segment主机有多个Segment实例,可能会想要使用这个选项,因为它将在一个集中的位置而不是每个Segment数据目录中创建转储文件。
注意: 如果--ddboost被指定,则不支持这个选项。
--use-set-session-authorization
使用SET SESSION AUTHORIZATION命令取代ALTER OWNER命令设置对象拥有关系。
-v | --verbose
指定详细模式。
--version (show utility version)
显示这个工具的版本。
-x database_name
必需。要转储的Greenplum数据库的名称。
-y reportfile
这个选项已被弃用,并且将在未来的发行中被移除。如果指定,会返回一个警告消息说明-y选项已被弃用。
指定完整路径名,备份作业日志的副本将被放在Master主机的这个位置。作业日志被创建在Master的数据目录中,如果是远程运行则会创建在当前工作目录中。
-z (无压缩)
不使用压缩。默认是用gzip压缩转储文件。
为NFS和Data Domain Boost备份使用这个选项(-z)。
-? (帮助)
显示在线帮助。

自定义Email的文件格式

用户可以配置gpcrondump在为一个数据库完成备份操作后发送一封Email通知。为了自定义为一个数据库发送的Email的主题和From行,用户可以创建一个YAML文件并且用选项--email-file指定该文件的位置。在这个YAML文件中,用户可以指定为gpcrondump备份的每个数据库指定不同的主题和From行。这种YAML文件的格式是:

EMAIL_DETAILS:
    -
        DBNAME: database_name
        FROM: from_user
        SUBJECT: subject_text

在为gpcrondump配置Email通知时,from_usersubject_textdatabase_name的备份完成后gpcrondump用在Email通知中的字符串。

这个YAML文件的例子为数据库testdb100testdb200指定不同的主题和From行。

EMAIL_DETAILS:
    -
        DBNAME: testdb100
        FROM: RRP_MPE2_1
        SUBJECT: backup completed for Database 'testdb100'
    -
        DBNAME: testdb200
        FROM: Report_from_DCDDEV_host
        SUBJECT: Completed backup for database 'testdb200'

示例

直接调用gpcrondump并且转储mydatabase(以及全局对象):

gpcrondump -x mydatabase -c -g -G

一个在每晚午夜1点备份sales数据库(以及全局对象)的crontab项:

01 0 * * * /home/gpadmin/gpdump.sh >> gpdump.log

转储脚本gpdump.sh的内容是:

#!/bin/bash
  export GPHOME=/usr/local/greenplum-db
  export MASTER_DATA_DIRECTORY=/data/gpdb_p1/gp-1
  . $GPHOME/greenplum_path.sh  
  gpcrondump -x sales -c -g -G -a -q 

这个例子创建两个文本文件,一个的后缀是_pipes,另一个的后缀是_regular_files_pipes文件包含在备份Greenplum数据库mytestdb时可以是命名管道的文件名。

gpcrondump -x mytestdb -K 20131030140000 --list-backup-files

要将增量备份用于一组数据库表,用户必须创建该组表的一个完全备份并且指定--prefix选项以标识该备份集。下面的例子使用--table-file选项创建文件user-tables中列出的表集合的完全备份。前缀user_backup标识该备份集。

gpcrondump -x mydatabase --table-file=user-tables
  --prefix user_backup

要为前一个例子中创建完全备份创建一个增量备份,指定--incremental选项以及选项--prefix user_backup来标识备份集。这个例子创建一个增量备份。

gpcrondump -x mydatabase --incremental --prefix user_backup

这个命令列出完全备份中包括的表或者被排除的表。

gpcrondump -x mydatabase --incremental --prefix user_backup 
  --list-filter-tables

这个命令备份数据库customer并且指定定义在NetBackup主服务器 nbu_server1上的NetBackup策略和调度。大小为1024字节的块被用来传输数据到这台NetBackup服务器。

gpcrondump -x customer --netbackup-service-host=nbu_server1
  --netbackup-policy=gpdb_cust --netbackup-schedule=gpdb_backup
  --netbackup-block-size=1024

另见

gpdbrestore