gpt4 book ai didi

postgresql - 将 postgres 数据库从一台服务器复制到另一台服务器

转载 作者:行者123 更新时间:2023-11-29 11:31:42 26 4
gpt4 key购买 nike

我有一个 postgres 数据库,其中包含许多模式和每个模式中的许多表,并且这些表之间有一堆外键关系。我想要做的就是将所有内容从一台服务器复制到另一台服务器,实质上是创建第一台服务器的副本。在这一点上,我不在乎在执行此操作时是否必须让其中一个或两个服务器完全失效。

我想不出将第一个数据库中的所有内容直接复制到第二个数据库中的方法。我尝试了 pg_dump 和 pg_restore 但恢复违反了一堆外部约束,因此没有正确恢复。我读过,您可以执行仅数据恢复,这将消除所有数据,在加载数据时禁用约束,然后在加载数据后重新启用约束,但这假设源数据库和目标数据库具有相同的表结构,但它们不同。如果有办法只转储架构和数据,我想这会奏效,但我也没有找到这样做的方法。

最佳答案

如果你想在 server1 上获取数据库 mydb 并将其复制到 server2 上的 mydb,< em>完全替换 server2mydb 的所有内容,转储如下内容:

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 server2 上的数据库 mydb完全永久地销毁 mydb 中的所有数据 server2
  • 从一个完全空的模板server2 上重新CREATE 数据库mydb
  • server1 上的 mydb 副本恢复到 server2

另一种选择是使用 pg_restore --clean 而无需删除和创建。这将删除所有表然后重新创建它们。我更愿意放弃整个数据库并获得一个干净的数据库。

关于postgresql - 将 postgres 数据库从一台服务器复制到另一台服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30043392/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com