将 PostgreSQL 服务器复制到另一台服务器

问题描述 投票:0回答:2

我正在寻找将 PostgreSQL 服务器复制到另一台服务器。

  1. 我想迁移可能包含多个数据库的整个服务器
  2. 我正在尝试使用云数据库(例如AWS,它不为RDS提供超级用户权限)来做到这一点,因此最好提供具有“创建角色,创建数据库”属性的用户的解决方案 密码有效期至无穷大

我想要类似的东西(这个查询不存在只是一个例子)

pg_dumpall -C -h localhost -U localuser | psql -h remotehost -U remoteuser

我知道下面的查询存在,但对于 pg_dumpall 来说效果不一样

pg_dump -C -h localhost -U localuser dbname | psql -h remotehost -U remoteuser dbname
database postgresql migration database-migration data-migration
2个回答
0
投票
pg_dumpall -c -h localhost -U localuser | psql -h remotehost -U remoteuser

-c 用于在重新创建之前清理数据库。 您还应该拥有该用户的超级用户权限。


0
投票

如果您的目标是将所有数据库从集群 A 移动到集群 B(集群 A 上的一个特定数据库除外),您可以将

--exclude-database=pattern
参数添加到
pg_dumpall
:

--exclude-database=pattern

不要转储名称与 模式匹配的数据库。可以通过编写多个

--exclude-database
开关来排除多个模式。根据 psql 的 \d 命令使用的相同规则(请参阅Patterns),pattern 参数被解释为
pattern,因此也可以通过在模式中写入通配符来排除多个数据库。使用通配符时,如果需要,请小心引用模式,以防止 shell 通配符扩展。

pg_dumpall -h localhost -U localuser --exclude-database=the_db_you_do_not_want \ 
| psql -h remotehost -U remoteuser

评论中所述,此命令不存在

-C
,因为它是不必要的。
--clean
是可选的,并不建议将其作为默认设置 - 如果您误导了命令并瞄准了错误的集群,它最好向您发出警告,而不是悄悄地将其清除干净。

© www.soinside.com 2019 - 2024. All rights reserved.