备份和恢复概述
Greenplum数据库支持并行和非并行的方法来备份和恢复数据库。并行操作的扩展不受系统中Segment数量的影响,因为每台Segment主机都同时把其数据写入到本地的磁盘存储上。如果使用非并行备份和恢复操作,数据必须通过网络从Segment被发送到Master,后者把所有的数据写入它的存储中。除了把I/O限制在一台主机上之外,非并行备份要求Master拥有足够的本地磁盘存储以保存整个数据库。
并行备份和恢复
Greenplum数据库的并行转储工具gpcrondump同时备份Greenplum的Master实例和每一个活动Segment实例。
默认情况下,gpcrondump在每个Segment实例的db_dumps子目录中创建转储文件。在Master上,gpcrondump会创建几个转储文件,其中包含DDL语句、系统目标和元数据文件之类的数据库信息。在每一个Segment上,gpcrondump会创建一个转储文件,它包含在那个Segment上重建数据的命令。为一次备份创建的每个文件都由一个14个数字的时间戳键开始,它标识该文件所属的备份集。
图 1. Greenplum数据库中的并行备份
gpdbrestore并行恢复工具取得由gpcrondump生成的时间戳键、验证备份集并且把数据库对象和数据恢复到一个分布式数据库中。并行恢复操作要求一个由gpcrondump创建的完整备份集、一个完全备份以及任何所需的增量备份。如下图所示,所有的Segment都同时从本地备份文件恢复数据。
图 2. Greenplum数据库中的并行恢复
gpdbrestore工具提供灵活性和验证选项用于gpcrondump产生的自动化备份文件或者从Greenplum集群移动到一个其他位置的备份文件。见恢复Greenplum数据库。gpdbrestore也能被用于拷贝文件到另一个位置。
非并行备份和恢复
PostgreSQL的pg_dump和pg_dumpall非并行备份工具可以被用来在Master主机上创建单个转储文件,它包含来自于所有活动Segment的所有数据。
PostgreSQL的非并行工具应该只被用于特殊情况。它们比使用Greenplum备份工具慢很多,因为所有的数据都必须通过Master。此外,Master主机常常会没有足够的磁盘空间来保存整个分布式Greenplum数据库的备份。
pg_restore工具要求由pg_dump或pg_dumpall创建的压缩转储文件。在开始恢复之前,用户应该修改转储文件中的CREATE TABLE语句来包括Greenplum的DISTRIBUTED子句。如果没有包括DISTRIBUTED子句,Greenplum数据库会分配默认值,它可能不是最优。详情请见CREATE TABLE in the Greenplum数据库参考指南中的CREATE TABLE。
要使用并行备份文件执行一次非并行恢复,用户可以从每台Segment主机把备份文件拷贝到Master主机,然后通过Master装载它们。见恢复到不同的Greenplum系统配置。
图 3. 使用并行备份文件的非并行恢复
另一种备份Greenplum数据库数据的非并行方法是使用SQL命令COPY TO把一个表的全部或者部分拷贝到Master主机上的一个用分隔符分隔的文本文件中。
上级主题: 备份和恢复数据库
备份和恢复选项
Greenplum数据库的备份和恢复工具支持备份文件的多种存放位置:
- 如果使用gpcrondump工具,备份文件可能会被保存在默认位置(Master和每个Segment的db_dumps子目录)中,或者被保存到由gpcrondump -u选项指定的一个不同目录中。
- gpcrondump和gpdbrestore工具集成有对Dell EMC Data Domain Boost和Veritas NetBackup系统的支持。
- 备份文件可以通过命名管道被保存到任何网络可访问的位置。
- 保存到默认位置的备份文件可能被移动到网络上的一台归档服务器。这允许以最高传输率(当Segment把备份数据写到快速本地磁盘阵列时)执行该备份然后通过将这些文件移到远程存储来释放磁盘空间。
用户可以创建包含选中的数据库对象的转储:
- 用户可以备份属于一个或者更多个方案的表,涉及的方案在命令行上或者一个文本文件中指定。
- 用户可以指定要从备份中排除的方案,排除的方案作为命令行选项给出或者写在一个文本文件中的列表里。
- 用户可以备份命令行或者文本文件中指定的一个表集合。表和方案选项不能在单次备份中同时使用。
- 除数据库对象之外,gpcrondump可以备份配置文件pg_hba.conf、pg_ident.conf和postgresql.conf,以及角色和表空间等全局数据库对象。
用户可以创建增量备份:
- 一个增量备份只包含从最近的增量或者完全备份以来改变过的追加优化表和列存表。
- 对于分区的追加优化表,只有变化过的追加优化/列存表分区会被包括在增量备份中。
- 增量备份包括所有的堆表。
- 使用gpcrondump --incremental标志可以指定一次增量备份。
- 恢复一个增量备份要求一个完全备份及所有的后续增量备份,一直到正在恢复的这个备份。
gpdbrestore工具提供了很多选项:
- 默认情况下,gpdbrestore把数据恢复到从其中备份的数据库中。
- --redirect标志允许用户把一个备份恢复到不同的数据库中。
- 恢复的数据库可以被删除或者重建,但默认是恢复到一个现有的数据库中。
- 可以从一个备份恢复选中的表,做法是将那些表列在命令行中或者把它们列在一个文本文件中并在命令行上指定该文件。
- 可以从移到一台归档服务器的备份恢复数据库。备份文件会被拷贝回Master主机和每台Segment主机上的位置,然后恢复到数据库。