我有自己的机器和postgres dmp文件,我想在网络中的远程虚拟机(例如,ip是192.168.0.190,postgres端口是5432)上恢复该文件。是否可以在不将转储复制到远程机器的情况下使用pg_restore还原此转储?因为转储的大小约为12GB,而虚拟机上的磁盘空间为20GB。感谢
您可以通过网络运行恢复,而无需将转储复制到远程主机。
只需在获得转储文件的主机上用-h <hostname>
和-p <port>
调用pg_restore
(可能还有-U <username>
来作为不同的用户进行身份验证),例如:
pg_restore -h 192.168.0.190 -p 5432 -d databasename -U myuser mydump.dump
参考文献:
- pg_restore文档
或者,您可以使用psql:
psql -h 192.168.0.190 -p 5432 -d <dbname> -U <username> -W -f mydump.dump
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)
您可以在"pg_restore"之前使用PGPASSWORD="your_database_password"在脚本中传递密码参数
我运行这个并为我工作:
scp backup.dump user@remotemachine:~
ssh user@remotemachine "pg_restore -h localhost -p 5432 -U databaseuser -W -F c -d databasename -v backup.dump"
您可以编写一个脚本来自动执行此操作。