pg_dump和pg_restore无法正常工作

问题描述

我是Postgres的新手,我有一个具有多个数据库实例的数据库主机(HOST1),现在我已配置了另一个主机(HOST2)。

我在HOST1上使用pg_dump创建了一个转储文件,并在HOST2上运行了pg_restore。我看到还原无法在新主机HOST2中使用所需的GRANTS还原数据库角色。

我是否需要使用pgdumpall从HOST1捕获具有相关GRANTS /特权的所有数据库角色,然后还原到HOST2?

解决方法

特别是您需要使用pg_dumpall -g。这将仅捕获全局数据(角色,表空间等)。它不会捕获GRANT输出中的pg_dump信息。您遇到的问题是pg_restore试图为数据库集群全局信息中不存在的GRANT授予ROLEs特权。