在远程机器上恢复转储

Posted

技术标签:

【中文标题】在远程机器上恢复转储【英文标题】:Restore dump on the remote machine 【发布时间】:2014-12-10 06:25:08 【问题描述】:

我有自己的带有 postgres dmp 文件的机器,我想在我的网络中的远程虚拟机上恢复它(例如,ip 是 192.168.0.190,postgres 端口是 5432)。是否可以使用 pg_restore 恢复此转储而不将转储复制到远程机器?因为转储的大小大约为 12GB,而虚拟机上的磁盘空间为 20GB。 谢谢

【问题讨论】:

【参考方案1】:

您可以通过网络运行还原,而无需将转储复制到远程主机。

只需在您获得转储文件的主机上调用 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 documentation

【讨论】:

是的,你是对的。我正在尝试这样 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 一样创建数据库 如果您想从远程机器访问,您将需要密码验证(或任何其他非本地验证)。创建用户并为数据库分配权限。或者如果这不是生产环境,创建一个超级用户,密码为:createuser -P -s someusername【参考方案2】:

或者,您可以使用 psql:

psql -h 192.168.0.190 -p 5432 -d <dbname> -U <username> -W -f mydump.dump

【讨论】:

【参考方案3】:

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 行我们可以增加大小【参考方案4】:

您可以在“pg_restore”之前使用 PGPASSWORD="your_database_password" 在脚本中传递密码参数

【讨论】:

【参考方案5】:

我运行它并为我工作:

    scp backup.dump user@remotemachine:~

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

您可以编写一个脚本来自动执行此操作。

【讨论】:

以上是关于在远程机器上恢复转储的主要内容,如果未能解决你的问题,请参考以下文章

mysql 从远程数据库转储到本地主机输出文件

gdb 调试远程核心转储

如何在不退出远程服务器上的 R 的情况下恢复 X11 连接

RMI(Remote Method Invocation ) 概念恢复

《转》VS2010进行远程调试方法总结

将 .bak 文件还原到远程数据库