本文介绍如何使用pg_restore命令将逻辑备份文件(.dump文件)中的数据恢复到RDS PostgreSQL实例或本地PostgreSQL数据库中。
前提条件
注意事项
恢复数据时连接的数据库建议不要用默认数据库postgres。
恢复指定表数据时不会尝试还原指定表可能依赖的数据库对象,因此无法保证将指定表还原到干净的数据库时一定会成功。
恢复数据库
登录已备份数据的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
命令行提示
Password:
时,输入PostgreSQL实例高权限账号对应的密码,然后按回车键确认。说明若出现内嵌插件plpgsql的报警,请忽略。
恢复指定表数据
登录已备份数据的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
命令行提示
Password:
时,输入PostgreSQL实例高权限账号对应的密码,然后按回车键确认。
恢复数据库模式(不恢复数据)
登录已备份数据的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
命令行提示
Password:
时,输入PostgreSQL实例高权限账号对应的密码,然后按回车键确认。说明若出现内嵌插件plpgsql的报警,请忽略。