pg_dump 与 pg_dumpall?使用哪一个来进行数据库备份?

2024-05-17

I tried 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

这意味着我的user and roles and grant信息不在pg_dump

另一方面我们有pg_dumpall, 我读对话 http://www.postgresql.org/message-id/h49gi3%244ko%241@reversiblemaps.ath.cx,这不会带我去任何地方吗?

Question
- 我应该使用哪一个来进行数据库备份?pg_dump or pg_dumpall?
- 要求是我可以进行备份并且应该能够导入到任何机器并且它应该可以正常工作。


通常的流程是:

  • pg_dumpall --globals-only获取用户/角色/等
  • pg_dump -Fc为每个数据库获得一个适合使用的良好压缩转储pg_restore.

是的,这很糟糕。我真的很想教书pg_dump镶嵌pg_dumpall输出到-Fc转储,但不幸的是现在它不知道如何做,所以你必须自己做。

直到 PostgreSQL 11 之前,这种方法还存在一个令人讨厌的警告:两者都不是pg_dump, nor pg_dumpall in --globals-only模式会转储用户访问权限GRANTs on DATABASEs。所以你几乎必须从目录中提取它们或过滤它们pg_dumpall。这在 PostgreSQL 11 中已修复;看到发行说明 https://www.postgresql.org/docs/11/release-11.html.

使 pg_dump 转储数据库的属性,而不仅仅是其内容 (Haribabu Kommi)

以前,数据库本身的属性,例如数据库级别GRANT/REVOKE权限和ALTER DATABASE SET变量设置,仅被转储pg_dumpall. Now pg_dump --create and pg_restore --create除了数据库中的对象之外,还将恢复这些数据库属性。pg_dumpall -g现在仅转储与角色和表空间相关的属性。pg_dumpall的完整输出(没有-g)不变。


您还应该了解物理备份 -pg_basebackup、PgBarman 和 WAL 归档、PITR 等。这些提供了更多“更细粒度”的恢复,精确到分钟或单个事务。缺点是它们占用更多空间,只能恢复到同一平台上的同一 PostgreSQL 版本,并且备份所有数据库中的所有表,无法排除任何内容。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

pg_dump 与 pg_dumpall?使用哪一个来进行数据库备份? 的相关文章

随机推荐