我正在尝试将我的PostgreSQL数据库恢复到AWS RDS。我想我快要完成了。我可以获得一个转储文件,并在本地重新创建数据库,但我缺少将其恢复到AWS RDS的最后一步。
这是我正在做的:
- 获取我的转储文件
$ pg_dump -h my_public dns -U myusername -f dump.sql myawsdb
- 在shell中创建一个名为test的本地数据库:
create database test;
- 将转储文件放入我的test数据库中
$ psql -U myusername -d test -f dump.sql
到目前为止都很好。
我遇到了一个错误:psql: dump.sql:2705: ERROR: role "rdsadmin" does not exist
,但我认为我可以忽略它,因为我的数据库已经存在并具有所有内容(我使用\list和\connect test进行了检查)。
现在,我想将此dump/test恢复到我的AWS RDS上。
按照这个 https://gist.github.com/syafiqfaiz/5273cd41df6f08fdedeb96e12af70e3b,我现在应该这样做:
pg_restore -h <host> -U <username> -c -d <database name> <filename to be restored>
但我的文件名是什么,我的数据库名是什么?
我尝试了:
pg_restore -h mydns -U myusername -c -d myawsdbname test
pg_restore -h mydns -U myusername -c -d myawsdbname dump.sql
还有一些我不记得的选项。
大多数时候,它会告诉我类似于:pg_restore:[archiver]无法打开输入文件“test.dump”:没有那个文件或目录
或者,对于第二种情况:输入文件似乎是文本格式的转储。请使用psql。
谁能指点我正确的方向?非常感谢您的帮助!
编辑:因此,我使用$pg_dump -Fc mydb> db.dump
创建了一个.dump文件,使用这个文件我认为可以工作了。现在我收到错误消息[archiver(db)]无法执行查询:错误:角色“myuser”不存在 命令是:ALTER TABLE public.users_user_user_permissions_id_seq OWNER TO micromegas;
我可以忽略它吗?
编辑2:通过添加标志--no-owner --role=mypguser --no-privileges --no-owner,我摆脱了错误。