文档

使用pg_restore恢复逻辑备份文件数据

更新时间:

本文介绍如何使用pg_restore命令将逻辑备份文件(.dump文件)中的数据恢复到RDS PostgreSQL实例或本地PostgreSQL数据库中。

说明
  • 对于少量的数据,您可参考本文使用逻辑备份进行快速恢复,例如恢复某个表的数据。对于大量的数据,建议您使用全量物理备份来恢复数据到新的实例中,然后通过数据传输服务DTS将数据迁移回原有实例

  • 更多数据恢复方案,请参见恢复方案概览

前提条件

逻辑备份PostgreSQL数据

注意事项

  • 恢复数据时连接的数据库建议不要用默认数据库postgres。

  • 恢复指定表数据时不会尝试还原指定表可能依赖的数据库对象,因此无法保证将指定表还原到干净的数据库时一定会成功。

恢复数据库

  1. 登录已备份数据的ECS实例或本地主机,使用如下命令恢复数据。

    pg_restore -h '<hostname>' -U <username> -p <port> -d <dbname> -c <dumpdir>

    参数

    说明

    hostname

    RDS PostgreSQL实例连接地址。

    说明

    username

    RDS PostgreSQL实例高权限账号名称。

    port

    RDS PostgreSQL实例端口。

    dbname

    待恢复数据的数据库名称。

    -c(可选参数)

    -c表示在恢复数据之前先清空目标数据库中的数据。更多选项的详细说明,请参见pg_restore

    dumpdir

    备份文件路径及名称。

    示例如下:

    pg_restore -h 'pgm-bpxxxxxx.pg.rds.aliyuncs.com' -U zht -p 5432 -d zht02 -c /tmp/testdb.dump
  2. 命令行提示Password:时,输入PostgreSQL实例高权限账号对应的密码,然后按回车键确认。

    image.png
    说明

    若出现内嵌插件plpgsql的报警,请忽略。

恢复指定表数据

  1. 登录已备份数据的ECS实例或本地主机,使用如下命令恢复指定表的数据。

    pg_restore -h '<hostname>' -U <username> -p <port> -d <dbname> -t <table> -c <dumpdir>

    参数

    说明

    hostname

    RDS PostgreSQL实例连接地址。

    说明

    username

    RDS PostgreSQL实例高权限账号名称。

    port

    RDS PostgreSQL实例端口。

    dbname

    待恢复数据的数据库名称。

    table

    待恢复的表名。

    -c(可选参数)

    -c表示在恢复数据之前先清空目标数据库中的数据。更多选项的详细说明,请参见pg_restore

    dumpdir

    备份文件路径及名称。

    示例如下:

    pg_restore -h 'pgm-bpxxxxxx.pg.rds.aliyuncs.com' -U zht -p 5432 -d zht01 -t zhttest0808 -c /tmp/testdb2.dump
  2. 命令行提示Password:时,输入PostgreSQL实例高权限账号对应的密码,然后按回车键确认。

    image.png

恢复数据库模式(不恢复数据)

  1. 登录已备份数据的ECS实例或本地主机,使用如下命令恢复数据库模式。

    pg_restore -h '<hostname>' -U <username> -p <port> -d <dbname> -s <dumpdir>

    参数

    说明

    hostname

    RDS PostgreSQL实例连接地址。

    说明

    username

    RDS PostgreSQL实例高权限账号名称。

    port

    RDS PostgreSQL实例端口。

    dbname

    待恢复模式的数据库名称。

    -s

    -s表示仅恢复模式,不恢复数据。更多选项的详细说明,请参见pg_restore

    dumpdir

    备份文件路径及名称。

    示例如下:

    pg_restore -h 'pgm-bpxxxxxx.pg.rds.aliyuncs.com' -U zht -p 5432 -d zht03 -s /tmp/testdb2.dump
  2. 命令行提示Password:时,输入PostgreSQL实例高权限账号对应的密码,然后按回车键确认。

    image.png
    说明

    若出现内嵌插件plpgsql的报警,请忽略。