通过 SSH 使用pg_restore还原 Postgres 数据库



我有一个没有太多磁盘空间的数据库服务器,所以我备份了整个数据库(我们称之为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 连接,请参阅文档。

我推荐pg_dump的"自定义"格式。

当然,你可以这样做:)假设您使用 ssh 密钥授权用户从源主机到目标主机。

在源主机上执行pg_dump,然后通过 ssh 通过管道传输到目标主机,如下所示:

pg_dump -C nextcloud | ssh -i .ssh/pg_nextcloud_key postgres@192.168.0.54 psql -d template1

希望对;)有所帮助

相关内容

  • 没有找到相关文章

最新更新