首页 > 解决方案 > 使用 pg_dump 和 pg_restore 在 2 个 RDS 实例之间恢复数据库时出现问题

问题描述

我很难将数据库还原到 AWS RDS Postgresql 实例。上下文是我正在从一个 RDS 实例备份并恢复到另一个 RDS 保险。它们都具有相同版本的 Postgresql 9.6.5。

我能够使用以下命令进行转储:

./pg_dump.exe -U dbuser -W -h prod-pgsql-rds.3ft5coqxjdnq.eu-west-2.rds.amazonaws.com -d devdb > c:\tmp\backup.sql

然后,从生成的 .sql 文件中,我尝试使用以下命令还原到另一个同样使用 Postgresql 9.6.5 的 RDS 实例:

./pg_restore.exe -U dbuser -d testdevdb -h dev-pgsql-rds.cym8coqx52lq.eu-west-2.rds.amazonaws.com "c:\tmp\backup.sql"

*我还尝试了上述恢复命令中的 -f 开关,而不是文件名之前/之后的“”引号

但是当我尝试将其还原到新创建的数据库时,出现以下错误:

pg_restore: [archiver] 输入文件似乎不是有效的存档

任何人都可以帮忙吗?仅供参考,我正在通过 Windows PowerShell 使用 PGAdmin 4。由于数据敏感性,我必须编辑上面字符串中的一些值。

标签: postgresqlamazon-web-servicesamazon-rds

解决方案


pg_restore仅用于其他pg_dump可以输出的非纯文本输出格式。对于 .sql 转储,您只需使用 psql。请参阅有关从备份恢复的文档

在 Unix 环境中,你会这样做psql [yourflags] < /tmp/backup.sql,但我不熟悉 powershell,不知道它是否支持<输入重定向;希望它存在或者您知道等效的 PowerShell 语法。


推荐阅读