在远程机器上恢复转储

26

我有一台自己的机器,其中包含一个Postgres dmp文件。我想在我的网络上的远程虚拟机(例如IP为192.168.0.190,postgresql端口为5432)上还原它。不将转储复制到远程机器上,可否使用pg_restore还原这个转储?因为该转储大小约为12GB,而虚拟机上的磁盘空间只有20GB。

5个回答

47

您可以在不将转储文件复制到远程主机的情况下通过网络运行还原操作。

只需在获取了转储文件的主机上使用pg_restore命令并带上-h <hostname>-p <port>(可能需要用-U <username> 作为不同用户进行身份验证),例如:

pg_restore -h 192.168.0.190 -p 5432 -d databasename -U myuser mydump.dump

参考资料:


是的,你说得对。我正在尝试这样做:pg_restore -i -h 192.168.1.190 -p 5432 -U postgres -d MFC_sara -v /home/develop/BD_Dumps/Saratov.dmp; 但在执行此命令后,需要输入目标数据库的某些密码。而我不知道它是什么,在虚拟机上,我只是像这样创建数据库:createdb -T template0 MFC_sara。 - Danila Zharenkov
1
如果你想从远程机器访问,你将需要密码认证(或任何其他非本地认证方式)。创建一个用户并为数据库分配权限。或者如果这不是生产环境,可以使用以下命令创建一个超级用户并设置密码:createuser -P -s someusername - nif

18

另一种方法是使用psql:

psql -h 192.168.0.190 -p 5432 -d <数据库名> -U <用户名> -W -f mydump.dump


9
AWS上远程RDS实例的示例。
psql -h  mydb.dsdreetr34.eu-west-1.rds.amazonaws.com -p 5432 -d mydbname -U mydbuser -W -f  mydatabase-dump.sql

  -f, --file=FILENAME      execute commands from file, then exit
  -W, --password           force password prompt (should happen automatically)

这个可行!但是我们能否一次插入10行,增加大小? - Rohit Parte

1

在执行 "pg_restore" 命令前,您可以在脚本中传递密码参数,使用 PGPASSWORD="your_database_password"。


1
我运行这个程序,对我有效:
    scp backup.dump user@remotemachine:~

    ssh user@remotemachine "pg_restore -h localhost -p 5432 -U databaseuser -W -F c -d databasename -v backup.dump"

你可以编写一个脚本来自动化这个过程。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接