У меня есть собственная машина с файлом dmp postgres, который я хочу восстановить на удаленной виртуальной машине (например, ip 192.168.0.190, а порт postgres - 5432) в моей сети. Можно ли восстановить этот дамп с помощью pg_restore без копирования дампа на удаленную машину? Поскольку размер дампа около 12 ГБ и дискового пространства на виртуальной машине составляет 20 ГБ. ThanksВосстановление дампа на удаленном компьютере
7
A
ответ
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" с помощью 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"
Вы можете написать сценарий для автоматизации этого.
Да, вы правы. Я пытаюсь как это 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 –
Если вы хотите получить доступ с удаленного компьютера, вам понадобится аутентификация паролем (или любая другая нелокальная аутентификация). Создайте пользователя и назначьте привилегии для базы данных. Или, если это не производственная среда, создайте суперпользователя с паролем: 'createuser -P -s someusername' – nif