- 使用增量备份集的示例
- 使用gpbackup创建增量备份
- 使用gprestore从增量备份还原
- 增量备份说明
将增量备份添加到备份集时, gpbackup通过检查以下gpbackup选项,来确保全量备份和增量备份是一致的:
当试图将增量备份添加到备份集时,如果gpbackup 选项不一致,则备份操作失败。
有关 gpbackup 和 gprestore工具选项的信息,请参阅参考文档中的gpbackup和gprestore。
使用增量备份集的示例
创建备份时,每个备份都有一个时间戳。例如,如果您在2017年5月14日创建备份,则备份文件名包含 20170514hhmmss。hhmmss表示时间:小时,分钟和秒。
本示例假定您已经创建了数据库mytest的两个全量备份和增量备份。为创建全量备份,您使用了以下命令:
gpbackup --dbname mytest --backup-dir /mybackup --leaf-partition-data
您使用以下命令创建了增量备份:
gpbackup --dbname mytest --backup-dir /mybackup --leaf-partition-data --incremental
您指定了 --backup-dir 选项,备份被创建在每个Greenplum数据库主机上的/mybackup目录下。
在示例中,全量备份具有时间戳记键 20170514054532 和 20171114064330。其他备份是增量备份。该示例包含两个备份集,第一个具有两个增量备份,第二个具有一个增量备份。备份从最早到最新列出。
- 20170514054532 (完整备份)
- 20170714095512
- 20170914081205
- 20171114064330 (完整备份)
- 20180114051246
要基于最新的增量备份创建新的增量备份,必须包含与增量备份相同的--backup-dir选项以及--leaf-partition-data和--incremental选项
。
gpbackup --dbname mytest --backup-dir /mybackup --leaf-partition-data --incremental
您可以指定 --from-timestamp选项,以基于现有的增量或全量备份来创建增量备份。根据该示例,以下命令将第四个增量备份添加到备份集,其中包括20170914081205 作为增量备份,并使用 20170514054532 作为全量备份。
gpbackup --dbname mytest --backup-dir /mybackup --leaf-partition-data --incremental --from-timestamp 20170914081205
以下命令基于全量备份20171114064330创建增量备份集,并且与包括增量备份20180114051246的备份集分开。
gpbackup --dbname mytest --backup-dir /mybackup --leaf-partition-data --incremental --from-timestamp 20171114064330
要使用增量备份20170914081205来恢复数据库 ,您需要增量备份 20120914081205 和 20170714095512,以及全量备份 20170514054532。以下是gprestore 命令。
gprestore --backup-dir /backupdir --timestamp 20170914081205
使用gpbackup创建增量备份
gpbackup输出显示增量备份所基于的备份的时间戳。在此示例中,增量备份基于时间戳为20180802171642的备份。备份20180802171642 可以是增量备份或全量备份。
$ gpbackup --dbname test --backup-dir /backups --leaf-partition-data --incremental
20180803:15:40:51 gpbackup:gpadmin:mdw:002907-[INFO]:-Starting backup of database test
20180803:15:40:52 gpbackup:gpadmin:mdw:002907-[INFO]:-Backup Timestamp = 20180803154051
20180803:15:40:52 gpbackup:gpadmin:mdw:002907-[INFO]:-Backup Database = test
20180803:15:40:52 gpbackup:gpadmin:mdw:002907-[INFO]:-Gathering list of tables for backup
20180803:15:40:52 gpbackup:gpadmin:mdw:002907-[INFO]:-Acquiring ACCESS SHARE locks on tables
Locks acquired: 5 / 5 [================================================================] 100.00% 0s
20180803:15:40:52 gpbackup:gpadmin:mdw:002907-[INFO]:-Gathering additional table metadata
20180803:15:40:52 gpbackup:gpadmin:mdw:002907-[INFO]:-Metadata will be written to /backups/gpseg-1/backups/20180803/20180803154051/gpbackup_20180803154051_metadata.sql
20180803:15:40:52 gpbackup:gpadmin:mdw:002907-[INFO]:-Writing global database metadata
20180803:15:40:52 gpbackup:gpadmin:mdw:002907-[INFO]:-Global database metadata backup complete
20180803:15:40:52 gpbackup:gpadmin:mdw:002907-[INFO]:-Writing pre-data metadata
20180803:15:40:52 gpbackup:gpadmin:mdw:002907-[INFO]:-Pre-data metadata backup complete
20180803:15:40:52 gpbackup:gpadmin:mdw:002907-[INFO]:-Writing post-data metadata
20180803:15:40:52 gpbackup:gpadmin:mdw:002907-[INFO]:-Post-data metadata backup complete
20180803:15:40:52 gpbackup:gpadmin:mdw:002907-[INFO]:-Basing incremental backup off of backup with timestamp = 20180802171642
20180803:15:40:52 gpbackup:gpadmin:mdw:002907-[INFO]:-Writing data to file
Tables backed up: 4 / 4 [==============================================================] 100.00% 0s
20180803:15:40:52 gpbackup:gpadmin:mdw:002907-[INFO]:-Data backup complete
20180803:15:40:53 gpbackup:gpadmin:mdw:002907-[INFO]:-Found neither /usr/local/greenplum-db/./bin/gp_email_contacts.yaml nor /home/gpadmin/gp_email_contacts.yaml
20180803:15:40:53 gpbackup:gpadmin:mdw:002907-[INFO]:-Email containing gpbackup report /backups/gpseg-1/backups/20180803/20180803154051/gpbackup_20180803154051_report will not be sent
20180803:15:40:53 gpbackup:gpadmin:mdw:002907-[INFO]:-Backup completed successfully
使用gprestore从增量备份恢复
从增量备份还原时,您可以指定 --verbose
选项,以在命令行上显示在恢复操作中使用的备份。例如,以下gprestore 命令使用时间戳20180807092740增量备份来恢复备份。输出包括用于恢复数据库数据的备份。
$ gprestore --create-db --timestamp 20180807162904 --verbose
...
20180807:16:31:56 gprestore:gpadmin:mdw:008603-[INFO]:-Pre-data metadata restore complete
20180807:16:31:56 gprestore:gpadmin:mdw:008603-[DEBUG]:-Verifying backup file count
20180807:16:31:56 gprestore:gpadmin:mdw:008603-[DEBUG]:-Restoring data from backup with timestamp: 20180807162654
20180807:16:31:56 gprestore:gpadmin:mdw:008603-[DEBUG]:-Reading data for table public.tbl_ao from file (table 1 of 1)
20180807:16:31:56 gprestore:gpadmin:mdw:008603-[DEBUG]:-Checking whether segment agents had errors during restore
20180807:16:31:56 gprestore:gpadmin:mdw:008603-[DEBUG]:-Restoring data from backup with timestamp: 20180807162819
20180807:16:31:56 gprestore:gpadmin:mdw:008603-[DEBUG]:-Reading data for table public.test_ao from file (table 1 of 1)
20180807:16:31:56 gprestore:gpadmin:mdw:008603-[DEBUG]:-Checking whether segment agents had errors during restore
20180807:16:31:56 gprestore:gpadmin:mdw:008603-[DEBUG]:-Restoring data from backup with timestamp: 20180807162904
20180807:16:31:56 gprestore:gpadmin:mdw:008603-[DEBUG]:-Reading data for table public.homes2 from file (table 1 of 4)
20180807:16:31:56 gprestore:gpadmin:mdw:008603-[DEBUG]:-Reading data for table public.test2 from file (table 2 of 4)
20180807:16:31:56 gprestore:gpadmin:mdw:008603-[DEBUG]:-Reading data for table public.homes2a from file (table 3 of 4)
20180807:16:31:56 gprestore:gpadmin:mdw:008603-[DEBUG]:-Reading data for table public.test2a from file (table 4 of 4)
20180807:16:31:56 gprestore:gpadmin:mdw:008603-[DEBUG]:-Checking whether segment agents had errors during restore
20180807:16:31:57 gprestore:gpadmin:mdw:008603-[INFO]:-Data restore complete
20180807:16:31:57 gprestore:gpadmin:mdw:008603-[INFO]:-Restoring post-data metadata
20180807:16:31:57 gprestore:gpadmin:mdw:008603-[INFO]:-Post-data metadata restore complete
...
输出显示恢复操作使用了三个备份。
从增量备份还原时, gprestore还会在gprestore日志文件中列出还原操作中使用的备份。
在恢复操作期间,如果全量备份或其他所需的增量备份不可用,gprestore将显示错误。
增量备份说明
要创建增量备份,或从增量备份集恢复数据,您需要完整的备份集。归档增量备份时,必须归档完整的备份集。您必须归档在Maste和所有Segment上创建的所有文件。
每次运行gpbackup 时,该工具都会将备份信息添加到Greenplum数据库master数据目录中的历史文件gpbackup_history.yaml。 该文件包括备份选项和其他的备份信息。
如果在创建增量备份时未指定--from-timestamp选项,则gpbackup将使用具有一致选项组的最新备份。 该工具检查备份历史记录文件以查找具有一致选项组的备份。 如果工具找不到具有一致选项组的备份或历史文件不存在,则gpbackup会显示一条消息,指出必须先创建全量备份才能创建增量。
如果在创建增量备份时指定--from-timestamp选项,则gpbackup会确保正在创建的备份的选项与指定备份的选项一致。
对于备份集中的所有备份,gpbackup选项--with-stats不需要一致。 但是,要使用gprestore选项--with-stats执行恢复操作来恢复统计信息,则您指定的备份必须在创建时必须使用--with-stats。
您可以从备份集中的任何备份执行恢复操作。但是,在增量备份中捕获的、比用来恢复数据库数据的备份晚的更改,将不会被恢复。
从增量备份集中还原时,gprestore将检查备份,并从备份集中的最新版本的AO表,来恢复每一个AO表,并从最新备份恢复堆表。
增量备份集、完整备份和关联的增量备份必须位于单个设备上。例如,备份集中的备份必须全部位于文件系统上,或必须全部位于Data Domain系统上。
警告:对Greenplum数据库Segment配置的更改,会使增量备份无效。更改Segment配置(添加或删除Segment实例)之后,必须先创建全量备份,然后才能创建增量备份。