使用pg_dump和pg_restore

时间:2020-09-01 17:55:50

标签: postgresql amazon-web-services amazon-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 < / strong>

然后从生成的.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:[存档]输入文件似乎不是有效的存档

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

2 个答案:

答案 0 :(得分:1)

pg_restore仅用于pg_dump可以输出的其他非纯文本输出格式。对于.sql转储,您只需使用psql。参见docs on restoring from backups

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

答案 1 :(得分:0)

所以我无法使psql或pg_restore正常工作,因此选择通过PGAmdin中的SQL查询工具将.SQL文件导入。通过一些错误,因此必须对.SQL文件进行一些更改,然后执行以下操作:

  1. 评论了几行引起错误的行
  2. 通过PGAdmin右键单击,以提高用户的权限,并使其成为Schema和DB属性的所有者。
  3. .sql文件正在从源RDS DB对该用户进行多次引用,因此必须查找并替换为目标RDS DB创建的用户帐户。或者,我可以在目标数据库上创建一个新用户,并使用与源数据库相同的用户名和密码,然后使其成为所有者,以供参考第2步。