我正在运行以下命令来在我的生产服务器上创建所有数据库的转储:
prodserver:/# pg_dumpall -U postgres -h 1.1.1.1 > prod.sql
在我的开发箱上,我还通过以下方式进行备份:
devserver:/# pg_dumpall -U postgres -h 1.1.1.1 > dev.sql
然后我尝试将生产数据库恢复到开发中,如下所示:
devserver:/# psql -f prod.sql -U postgres
它运行没有错误。它似乎正在创建表/导入数据。(我知道,因为如果我第二次运行它,我会收到某些数据已经存在/关系已经存在的消息。)
但是当我这样登录时:
psql -U postgres -d databasename
数据看起来与旧的开发数据相同。
我用应该恢复的生产数据尝试了以下操作:
select count(*) from widgets;
我将其与使用开发数据库时返回的计数进行比较,它们是相同的。
在尝试还原后,我也尝试过重新启动 postgresql ......这是不行的。
任何关于我可能做错的建议将不胜感激。
谢谢。
编辑 1
我还检查了以下内容:
我打开 prod.sql 文件,发现插入语句如下:
INSERT INTO widgets_to_wiget_groups VALUES (363, 15);
然后我在数据库上做了一个选择语句,看看我在表中是否有这个条目,但我没有......也许它正在恢复它但是在另一个用户的上下文中?
编辑 2
我也试过
psql -f prod.sql -U postgres -h 1.1.1.1
但它仍然不起作用作为测试,我尝试在另一台新服务器上恢复转储文件......结果相同。所以我检查并看到在转储文件中,没有 CREATE DATABASE 命令。我认为转储文件的原始命令不正确...
我不得不跑
手动创建数据库,然后将还原命令更改为: