使用gpdbrestore恢复数据库

使用gpdbrestore恢复数据库

gpdbrestore工具从gpcrondump创建的备份文件恢复一个数据库。

gpdbrestore要求下列选项之一来标识要恢复的备份集:
  • -t timestamp – 恢复带有指定时间戳的备份。
  • -b YYYYYMMDD – 恢复Segment数据目录的db_dumps子目录中指定日期的转储文件。
  • -s database_name – 恢复指定数据库在Segment数据目录中能找到的最后一组转储文件。
  • -R hostname:path – 恢复位于一台远程主机上指定目录中的备份集。
要恢复一个增量备份,用户需要备份文件的一个完整集合 - 一个完全备份和任何所需的增量备份。用户可以使用--list-backups选项来列举由时间戳指定的一个增量备份所需的完全以及增量备份集。例如:
$ gpdbrestore -t 20151013195916 --list-backup
用户可以使用--redirect database选项把一个备份恢复到一个不同的数据库。如果该数据库不存在则会创建它。下面的例子把mydb数据库最近的备份恢复到一个新的名为mydb_snapshot的数据库:
$ gpdbrestore -s grants --redirect grants_snapshot

用户还可以把一个备份恢复到不同的Greenplum数据库系统。有关这个选项的信息请见恢复到不同的Greenplum系统配置

从一台归档主机使用gpdbrestore恢复

用户可以使用-R选项恢复一个保存在Greenplum集群之外的主机上的备份。尽管不需要在该远程主机上安装Greenplum数据库软件,该远程主机必须有一个对Greenplum集群中所有主机配置了无密码ssh访问的gpadmin账号。这是必须的,因为每一台Segment主机将会使用scp来从该归档主机复制它的分段备份文件。请查看Greenplum数据库工具指南中的gpssh-exkeys来获得将远程主机加入到集群中的帮助。

这个过程假定该备份集已经被从Greenplum阵列移动到网络中的另一台主机。

  1. 确保从Greenplum的Master主机能够访问到归档主机:
    $ ping archive_host
  2. 确保能够使用gpadmin账号无密码ssh到远程主机中。
    $ ssh gpadmin@archive_host
  3. 确保可以从归档主机ping到Master主机:
    $ ping mdw
  4. 确保恢复的目标数据库存在。例如:
    $ createdb database_name
  5. 从Master上运行gpdbrestore工具。-R选项指定一个完整备份集的主机名和路径:
    $ gpdbrestore -R archive_host:/gpdb/backups/archive/20120714 -e dbname

    如果数据已经被创建,可省略-e dbname选项。