备份和恢复数据库
本主题介绍如何使用Greenplum备份和恢复的功能。
定期执行备份可确保您在发生数据损坏或系统故障时,可以恢复数据或重建Greenplum数据库系统。您也可以使用备份,将数据从一个Greenplum数据库系统迁移到另一个。
备份和恢复概述
Greenplum 数据库支持并行和非并行的方式来备份和恢复数据库。并行操作的规模与与系统中Segment数量无关,因为Segment主机各自将数据同时写入本地的磁盘存储中。对于非并行备份和恢复操作,必须通过网络将数据从Segment发送到Master,该Master将所有数据写入其存储中。除了将I/O限制在一台主机之外,非并行备份还要求Master具有足够的本地磁盘存储空间,来存储整个数据库。
使用gpbackup和gprestore的并行备份
gpbackup 和 gprestore 是Greenplum数据库备份和恢复的工具。 gpbackup 在单个表级别使用 ACCESS SHARE锁,而不是在pg_class目录表使用EXCLUSIVE锁。这使您能够在备份期间执行DML语句,例如CREATE、ALTER、DROP和TRUNCATE操作,只要这些操作不针对当前备份集即可。
使用gpbackup创建的备份文件,旨在提供将来恢复单个数据库对象及其依赖项(例如函数和所需的用户自定义的数据类型)的功能。有关更多信息,请参见使用gpbackup和gprestore的并行备份。
使用pg_dump进行非并行备份
PostgreSQL的非并行备份工具pg_dump 和 pg_dumpall,可用来在Master主机上创建一个单独的dump文件,该文件包括来自所有活动Segment的所有数据。
PostgreSQL非并行工具仅应在特殊情况下使用。它们比使用Greenplum备份工具要慢得多,因为所有数据都必须通过Master。此外,通常情况下,Master主机磁盘空间不足,无法保存整个分布式Greenplum数据库的备份。
pg_restore 工具需要由pg_dump或pg_dumpall创建的压缩转储文件。开始恢复之前,您应该修改转储文件中的CREATE TABLE语句,以包含Greenplum的 DISTRIBUTED子句。如果不包含DISTRIBUTED子句,Greenplum数据库将分配默认值,这可能不是最佳值。有关详细信息,请参见在“ Greenplum数据库参考指南”中的CREATE TABLE。
要使用并行备份文件执行非并行恢复,可以将备份文件从每个Segment主机复制到Master主机,然后通过Master主机加载它们。
备份Greenplum数据库数据的另一种非并行方法,是使用SQL命令 COPY TO ,用于将表的全部或部分,从数据库复制到Master主机上分隔的文本文件中。