将数据库从生产还原到开发

时间:2017-12-08 03:00:48

标签: postgresql

我们在生产服务器上有一个名为'itreport'的数据库,在开发服务器上有一个名为'itreport_dev'的数据库。

1)在生产服务器上,52个用户出现在数据库'itreport'中。 2)在开发服务器上,60个用户在当前数据库'itreport_dev'。 3)我已经把生产服务器数据库'itreport'转储了。转储文件名为backup_12082017.sql

我的问题是  如果我将上述转储(备份)文件还原到开发服务器数据库'itreport_dev,那么用户(60)将出现在开发数据库中?

如果不是我们在恢复过程中必须提供什么选项?

在Develpement服务器上执行哪些预备步骤和后续步骤?

1 个答案:

答案 0 :(得分:3)

简短回答:不,角色不属于单数据库备份。

如果仅使用pg_dump转储数据库,则只会恢复表和数据。没有任何角色。缺少角色所拥有的任何对象最终将由执行还原的用户拥有(此用户应该是超级用户)

如果您执行pg_dumpall个角色,则将备份所有数据库。

可以使用pg_dumpall -r

单独备份角色

如果执行pgdumpall --clean,则resore将销毁并替换转储中也存在的dev服务器上的任何数据库和角色。任何不在两者中的名称都不会受到影响(特殊角色“postgres”和模板数据库也不受影响)

pgdumpall备份是SQL备份,应使用psql进行恢复

su postgres -c psql < all-database-backupfile.sql

zcat all-database-backupfile.sql.gz | su postgres -c psql

(对于Windows使用runas而不是su,我不确定所需的确切语法)