繁体   English   中英

如何将Postgresql数据库还原到完全相同的状态?

[英]how to restore a postgresql database to the exact same state?

我在尝试着

  1. 创建一个PostgreSQL数据库的快照(使用pg_dump ),
  2. 做一些随机测试,并且
  3. 恢复到与快照完全相同的状态,并进行一些其他随机测试。

这些可能会发生很多天/不同天。 另外,我处于不是DB管理员的多用户环境中。 特别是,我无法创建新的数据库。

但是,当我使用还原数据库时

 gunzip -c dump_file.gz | psql my_db 

上面步骤2中的更改仍然存在。

例如,如果我复制一张表:

 create table foo1 as (select * from foo);

然后还原,复制的表foo1保留在那里。

有人可以解释一下如何恢复到步骤2从未发生过的完全相同的状态吗?

-更新-

在评论@a_horse_with_no_name之后,我尝试使用

DROP OWNED BY my_db_user 

在还原之前删除所有对象,但是出现了与我无法控制的扩展相关的错误,并且我的表保持不变。

ERROR:  cannot drop sequence bg_gid_seq because extension postgis_tiger_geocoder requires it
HINT:  You can drop extension postgis_tiger_geocoder instead.

有什么建议么?

您必须通过删除并重新创建数据库或类似方法来删除其中的所有内容。 pg_dump基本上只是制作一个SQL脚本,该脚本在应用时将确保所有表,存储的proc等都存在并具有其数据。 它不会删除任何内容。

您可以使用PostgreSQL模式

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM