postgresql - 通过 SSH 使用 pg_restore 恢复 Postgres 数据库

标签 postgresql ssh pg-restore

我有一个没有太多磁盘空间的数据库服务器,所以我备份了整个数据库(我们就称它为 redblue)并使用以下命令将其保存在本地(我的计算机上没有运行 pg):

ssh admin@w.x.y.z "pg_dump -U postgres redblue -h localhost " \
 >> db_backup_redblue.sql

我现在想将它恢复到另一台服务器 (1.2.3.4),其中包含旧版本的“redblue”数据库 - 但是在我尝试之前想问一下这是否正确:

ssh admin@1.2.3.4 "pg_restore -U postgres -C redblue" \
<< db_backup_redblue.sql

我不确定是否需要使用数据库名称执行 -C?

上面的命令会用我在本地的文件覆盖/恢复远程数据库吗?

谢谢!

最佳答案

不,那没有任何好处。

您必须在转储所在的机器上启动pg_restore。实际上,由于这是一个纯格式转储,您必须使用 psql 而不是 pg_restore:

psql -h 1.2.3.4 -U postgres -d redblue -f db_backup_redblue.sql

这要求目标系统上已经有一个空数据库redblue

如果要替换现有数据库,必须使用 --clean--create 选项以及 pg_dump

如果您想使用 SSL,您必须配置 PostgreSQL 服务器以接受 SSL 连接,参见 the documentation .

我推荐 pg_dump 的“自定义”格式。

关于postgresql - 通过 SSH 使用 pg_restore 恢复 Postgres 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51729431/

相关文章:

sql - 使用选择查询更新表

postgresql - 如何将数据从 S3 加载到 PostgreSQL RDS

java - Java 中非常基本的终端

postgresql - 恢复 .dump 文件 - "Permission Denied"

python - 如何诊断 Flask 性能不佳?

linux - 远程 SSH : no such file or directory

java - 使用java的多级ssh连接

postgresql - 在 pg_restore 期间排除表

django - pg_restore 不恢复某个表?

postgresql - 如何在 postgresql 集群升级期间修复 "Error: the locale requested by the environment is invalid"(pg_upgradecluster)