我正在寻找将 PostgreSQL 服务器复制到另一台服务器。
我想要类似的东西(这个查询不存在只是一个例子)
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
pg_dumpall -c -h localhost -U localuser | psql -h remotehost -U remoteuser
-c 用于在重新创建之前清理数据库。 您还应该拥有该用户的超级用户权限。
如果您的目标是将所有数据库从集群 A 移动到集群 B(集群 A 上的一个特定数据库除外),您可以将
--exclude-database=pattern
参数添加到 pg_dumpall
:
--exclude-database=pattern
不要转储名称与 模式匹配的数据库。可以通过编写多个
开关来排除多个模式。根据 psql 的--exclude-database
\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
是可选的,并不建议将其作为默认设置 - 如果您误导了命令并瞄准了错误的集群,它最好向您发出警告,而不是悄悄地将其清除干净。