2014-10-15 4 views
7

У меня есть собственная машина с файлом dmp postgres, который я хочу восстановить на удаленной виртуальной машине (например, ip 192.168.0.190, а порт postgres - 5432) в моей сети. Можно ли восстановить этот дамп с помощью pg_restore без копирования дампа на удаленную машину? Поскольку размер дампа около 12 ГБ и дискового пространства на виртуальной машине составляет 20 ГБ. ThanksВосстановление дампа на удаленном компьютере

ответ

13

Вы можете запустить восстановление по сети без копирования дампа на удаленный хост.

Просто взывают pg_restore с -h <hostname> и -p <port> (и, вероятно, -U <username> для аутентификации другого пользователя) на хосте вы получили файл дампа, например:

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

Ссылки:

+0

Да, вы правы. Я пытаюсь как это pg_restore -i -h 192.168.1.190 -p 5432 -U postgres -d MFC_sara -v /home/develop/BD_Dumps/Saratov.dmp; Но после этой команды необходимо ввести пароль для базы данных назначения. И я этого не знаю, на виртуальной машине я просто создаю db, как createdb -T template0 MFC_sara –

+1

Если вы хотите получить доступ с удаленного компьютера, вам понадобится аутентификация паролем (или любая другая нелокальная аутентификация). Создайте пользователя и назначьте привилегии для базы данных. Или, если это не производственная среда, создайте суперпользователя с паролем: 'createuser -P -s someusername' – nif

0

Вы можете передать параметр пароля в сценарии до "pg_restore" с помощью PGPASSWORD = "your_database_password"

2

В качестве альтернативы, вы можете использовать Psql:

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

0

Пример для удаленного экземпляра RDS на AWS

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) 
0

я запускаю это и работает для меня:

scp backup.dump [email protected]:~ 

    ssh [email protected] "pg_restore -h localhost -p 5432 -U databaseuser -W -F c -d databasename -v backup.dump" 

Вы можете написать сценарий для автоматизации этого.