【问题标题】: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。 谢谢

【问题讨论】:

    标签: postgresql dump remote-server pg-restore


    【解决方案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 -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"
        

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

        【讨论】:

          猜你喜欢
          • 2014-01-12
          • 2020-06-17
          • 2015-11-16
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-07-23
          • 1970-01-01
          相关资源
          最近更新 更多