我们在生产服务器上有一个名为'itreport'的数据库,在开发服务器上有一个名为'itreport_dev'的数据库。
1)在生产服务器上,52个用户出现在数据库'itreport'中。 2)在开发服务器上,60个用户在当前数据库'itreport_dev'。 3)我已经把生产服务器数据库'itreport'转储了。转储文件名为backup_12082017.sql
我的问题是 如果我将上述转储(备份)文件还原到开发服务器数据库'itreport_dev,那么用户(60)将出现在开发数据库中?
如果不是我们在恢复过程中必须提供什么选项?
在Develpement服务器上执行哪些预备步骤和后续步骤?
答案 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,我不确定所需的确切语法)