备份和恢复概述

Greenplum数据库支持并行和非并行的方法来备份和恢复数据库。 并行操作的规模不受系统中Segment数量的影响,因为每台Segment主机都同时把其数据写入到本地的磁盘存储上。 如果使用非并行备份和恢复操作,数据必须通过网络从Segment被发送到Master,后者把所有的数据写入它的存储中。 除了把I/O限制在一台主机上之外,非并行备份要求Master拥有足够的本地磁盘存储以保存整个数据库。

使用gpbackup和gprestore做并行备份

gpbackup和gprestore是Greenplum数据库的备份和恢复工具。 gpbackup在每个独立的表级别使用ACCESS SHARE锁,而不是在pg_class catalog表里加EXCLUSIVE锁。 这使得你可以在backup期间执行DML语句,如CREATE,ALTER,DROP和TRUNCATE操作,只要这些操作没有执行在备份的数据上。

使用gpbackup创建的备份文件旨在提供将来恢复单个数据库对象及其依赖项的功能,例如函数和所需的用户定义数据类型。 参考使用gpbackup和gprestore并行备份获取更多信息。

使用pg_dump做非并行备份

PostgreSQL pg_dump和pg_dumpall非并行备份工具可以用来在master主机上创建一个单独的,包含所有节点数据的dump文件。

PostgreSQL的非并行工具应该在特殊场合使用。 它们比使用Greenplum backup工具要慢得多,因为所有数据都必须通过master。 此外,通常情况是master主机没有足够的磁盘空间来保存整个分布式Greenplum数据库的备份。

pg_restore工具需要pg_dump或pg_dumpall创建的压缩dump文件。 在开始还原之前,应修改dump文件中的CREATE TABLE语句以包含Greenplum DISTRIBUTED子句。 如果您不包含DISTRIBUTED子句,Greenplum数据库会分配默认值,这可能不是最佳值。 有关详细信息,请参阅Greenplum数据库参考指南中的CREATE TABLE。

使用并行的备份文件来做一个非并行的恢复,可以从每个segment节点拷贝备份文件到master节点,然后通过master加装它们。

Figure 1. 使用并行的备份文件来做一个非并行的恢复
备份和恢复概述 - 图1

备份Greenplum数据库数据的另一种非并行方法是使用COPY TO SQL命令将数据库中的全部或部分表复制到master主机上的分隔文本文件。

Parent topic: 备份和恢复数据库