在远程机器上恢复转储
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"
您可以编写一个脚本来自动执行此操作。
【讨论】:
以上是关于在远程机器上恢复转储的主要内容,如果未能解决你的问题,请参考以下文章