我有一个Postgres数据库,其中包含许多模式和每个模式中的许多表,并且这些表之间有一堆外键关系。我要做的就是将所有内容从一台服务器复制到另一台服务器,实质上是创建第一台服务器的副本。此时,我不在乎在执行此操作时是否必须将其中一个或两个服务器完全淘汰。
我想不出一种直接将第一个数据库中的所有内容直接复制到第二个数据库中的方法。我尝试了pg_dump和pg_restore,但是恢复违反了一堆外部约束,因此无法正确恢复。我已经读到您可以进行仅数据还原,该操作将消除所有数据,在数据加载时禁用约束,然后在数据加载后重新启用约束,但这假定源数据库和目标数据库具有相同的表结构,但没有。如果有一种方法可以仅转储模式和数据,那么我可以想象这是可行的,但是我也没有找到一种方法来转储。
如果你想利用一个数据库mydb
上server
,并将其复制到mydb
的server2
,完全替代的所有内容mydb
对server2
喜欢的东西,转储:
pg_dump -Fc -f mydb.dump -h server1 mydb
然后还原为:
dropdb -h server2 mydb
createdb -h server2 -T template0 mydb
pg_restore -d mydb -h server2 mydb.dump
这将:
DROP
数据库mydb
上server2
,完全和永久性销毁所有数据mydb
上server2
CREATE
数据库mydb
上server2
从一个完全空白模板mydb
on的副本还原server
到server2
另一种选择是使用pg_restore --clean
而不拖放并创建。这将删除所有表,然后重新创建它们。我宁愿删除整个数据库,而是获得一个干净的数据库。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句