尝试将生产postgresql db恢复到开发框中

时间:2014-06-16 13:28:17

标签: postgresql-9.2 database-backups database-restore

我正在运行以下命令在我的生产服务器上创建所有数据库的转储:

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

数据看起来与旧的dev数据相同。我尝试了以下生产数据,据说可以恢复:

select count(*) from widgets; 

我将它与我使用开发数据库时返回的计数进行比较,它们是相同的。 看起来数据库没有正确恢复。

我必须:

  • a)在恢复生产之前删除dev databsae?
  • b)重启 的PostgreSQL?

我一直在使用http://www.postgresql.org/docs/9.1/static/app-pg-dumpall.html作为指南...... 我指的是页面底部的示例。

对于我可能做错的任何建议都将不胜感激。

感谢。

编辑1

我还检查了以下内容:

我打开了prod.sql文件并找到了如下的插入语句:

INSERT INTO widgets_to_wiget_groups VALUES (363, 15);

然后我在数据库上做了一个select语句,看看我是否在表中有这个条目但是我没有...也许它正在恢复它但是在另一个用户的上下文中?

1 个答案:

答案 0 :(得分:0)

我必须跑

CREATE DATABASE databasename;

手动创建db,然后将restore命令更改为:

devserver:/# psql -f prod.sql -U postgres -d databasename