我试过pg_dump然后在一个单独的机器我试图导入sql并填充数据库,我看到
CREATE TABLE ERROR: role "prod" does not exist CREATE TABLE ERROR: role "prod" does not exist CREATE TABLE ERROR: role "prod" does not exist CREATE TABLE ERROR: role "prod" does not exist ALTER TABLE ALTER TABLE ALTER TABLE ALTER TABLE ALTER TABLE ALTER TABLE ALTER TABLE WARNING: no privileges could be revoked for "public" REVOKE ERROR: role "postgres" does not exist ERROR: role "postgres" does not exist WARNING: no privileges were granted for "public" GRANT
这意味着我的用户和角色和授权信息不在pg_dump中
另一方面,我们有pg_dumpall,我读了conversation,这不会导致我任何地方?
题
– 我应该使用哪个数据库备份? pg_dump或pg_dumpall?
– 要求是我可以采取备份,应该能够导入任何机器,它应该工作正常。
通常的过程是:
> pg_dumpall –globals只有获取用户/角色/等
> pg_dump -Fc为每个数据库获得一个适用于pg_restore的很好的压缩转储。
是的,这种吮吸。我真的很想教pg_dump将pg_dumpall输出嵌入到-Fc转储中,但现在不幸的是,它不知道你自己要怎么做。
在编写时(9.4),还有一个令人讨厌的注意事项:pg_dump和pg_dumpall中的–globals-only模式都将转储用户访问DATABASE上的GRANT。
您还应该了解物理备份 – pg_basebackup,PgBarman和WAL归档,PITR等。它们提供了更精细的细分恢复,直到分钟或单个事务。缺点是它们占用更多空间,只能在同一平台上恢复到相同的Postgresql版本,并备份所有数据库中的所有表,无需排除任何内容。