Восстановить резервный файл postgres с помощью командной строки?

Я новичок в postgresql, и локально я использую pgadmin3. Однако на удаленном сервере у меня нет такой роскоши.

Я уже создал резервную копию базы данных и скопировал ее, но есть ли способ восстановить резервную копию из командной строки? Я вижу только вещи, связанные с GUI или pg_dumps, поэтому, если кто-то может сказать мне, как это сделать, это было бы потрясающе!

Ответ 1

Есть два инструмента для просмотра, в зависимости от того, как вы создали файл дампа.

Первым источником ссылки должна быть страница man pg_dump(1), так как это создает сам дамп. В нем говорится:

Дампы могут выводиться в script или архивные форматы файлов. script дампы текстовые файлы, содержащие SQL команды, необходимые для реконструкции базы данных в состояние, в котором оно было в то время, когда он был спасен. к восстановить из такого script, подать его на PSQL (1). script можно использовать файлы восстановить базу данных даже на других машинах и других архитектуры; с некоторыми изменениями даже в других продуктах базы данных SQL.

Альтернативные форматы архивных файлов должен использоваться с pg_restore (1) - перестроить базу данных. Они разрешают pg_restore, чтобы быть избирательным о том, что восстанавливается или даже изменяется порядок перед восстановлением. форматы архивных файлов предназначены для быть переносимыми по архитектуре.

Так зависит от того, как он был выгружен. Вероятно, вы можете понять это, используя отличную команду file(1) - если она упоминает текст ASCII и/или SQL, ее следует восстановить с помощью psql, иначе вы, вероятно, должны использовать pg_restore

Восстановление довольно просто:

psql -U <username> -d <dbname> -1 -f <filename>.sql

или

pg_restore -U <username> -d <dbname> -1 <filename>.dump

Проверьте их соответствующие manpages - существует довольно много вариантов, которые влияют на работу восстановления. Возможно, вам придется очистить свои "живые" базы данных или воссоздать их из шаблона0 (как указано в комментарии) до восстановления, в зависимости от того, как сгенерированы дампы.

Ответ 2

создать резервную копию

pg_dump -i -h localhost -p 5432 -U postgres -F c -b -v -f 
"/usr/local/backup/10.70.0.61.backup" old_db

восстановить из резервной копии

pg_restore -i -h localhost -p 5432 -U postgres -d old_db -v 
"/usr/local/backup/10.70.0.61.backup"

важно установить -h localhost - параметр

Ответ 3

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

su - postgres
psql -l                      # will list all databases on Postgres cluster

pg_dump/pg_restore

  pg_dump -U username -f backup.dump database_name -Fc 

switch -F укажите формат файла резервной копии:

  • c будет использовать пользовательский формат PostgreSQL, который сжимается и приводит к наименьшему размеру файла резервной копии.
  • d для каталога, где каждый файл является одной таблицей
  • t для архива TAR (больше, чем в обычном формате)

восстановить резервную копию:

   pg_restore -d database_name -U username -C backup.dump

Параметр -C должен создать базу данных перед импортом данных. Если он не работает, вы всегда можете создать базу данных, например. с командой (как пользователь postgres или другая учетная запись, которая имеет права создавать базы данных) createdb db_name -O owner

pg_dump/PSQL

Если вы не указали аргумент -F, использовался стандартный формат текста по умолчанию (или с -F p). Тогда вы не можете использовать pg_restore. Вы можете импортировать данные с помощью psql.

резервного копирования:

pg_dump -U username -f backup.sql database_name

restore:

psql -d database_name -f backup.sql

Ответ 4

POSTGRESQL 9.1.12

DUMP:

pg_dump -U user db_name > archive_name.sql

введите пароль пользователя и нажмите клавишу ввода.

RESTORE:

psql -U user db_name < /directory/archive.sql

введите пароль пользователя и нажмите клавишу ввода.

Ответ 5

Ниже приведена моя версия pg_dump, которую я использую для восстановления базы данных

pg_restore -h localhost -p 5432 -U postgres -d my_new_database my_old_database.backup

или используйте psql:

psql -h localhost -U postgres -p 5432 my_new_database < my_old_database.backup

где -h localhost, -p port, -u login, -d имя базы данных

Ответ 6

Резервное копирование и восстановление с помощью GZIP

Для базы данных большего размера это очень хорошо

резервного копирования

pg_dump -U user -d mydb | gzip > mydb.pgsql.gz

resore

gunzip -c mydb.pgsql.gz | psql dbname -U user

https://www.postgresql.org/docs/9.1/static/backup-dump.html

Ответ 7

Backup:  $ pg_dump -U {user-name} {source_db} -f {dumpfilename.sql}

Restore: $ psql -U {user-name} -d {desintation_db} -f {dumpfilename.sql}

Ответ 8

1. запустите терминал.

2.Нажмите на свою базу данных следующую команду

ваш postgres bin -/opt/PostgreSQL/9.1/bin/

ваш исходный сервер базы данных - 192.168.1.111

местоположение и имя файла резервной копии -/home/dinesh/db/mydb.backup

ваше имя источника db - mydatabase

/opt/PostgreSQL/9.1/bin/pg_dump --host '192.168.1.111' --port 5432 - имя пользователя "postgres" --no-password --format custom --blobs -file "/home/dinesh/db/mydb.backup" "mydatabase"

3. восстановить файл mydb.backup в пункт назначения.

ваш целевой сервер - localhost

имя вашей целевой базы данных - mydatabase

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

/opt/PostgreSQL/9.1/bin/psql -h 'localhost' -p 5432 -U postgres -c "CREATE DATABASE mydatabase"

восстановить резервную копию.

/opt/PostgreSQL/9.1/bin/pg_restore --host 'localhost' --port 5432 --username "postgres" --dbname "mydatabase" --no-password --clean "/home/dinesh/db/mydb.backup"

Ответ 9

Восстановление файла резервной копии postgres зависит от того, как вы взяли резервную копию в первую очередь.

Если вы использовали pg_dump с -F c или -F d, вам нужно использовать pg_restore, иначе вы можете просто использовать

psql -h localhost -p 5432 -U postgres < BackupFile

9 способов резервного копирования и восстановления баз postgres

Ответ 10

Как сказано ниже, вы можете использовать команду psql для восстановления файла дампа:

https://www.postgresql.org/docs/8.1/static/backup.html#BACKUP-DUMP-RESTORE

psql dbname < infile

если вам нужно установить имя пользователя, просто добавьте имя пользователя после команды:

psql dbname < infile username

Ответ 11

Если вы создаете резервную копию с помощью pg_dump, вы можете легко восстановить ее следующим образом:

  • Откройте окно командной строки
  • Перейдите в папку bin Postgres. Например: cd "C:\ProgramFiles\PostgreSQL\9.5\bin"
  • Введите команду для восстановления базы данных. For example: psql.exe -U postgres -d YourDatabase -f D:\Backup\.sql
  • Введите пароль для пользователя postgres.
  • Проверьте процесс восстановления

Ответ 12

У меня были проблемы с проверкой подлинности pg_dump, поэтому я переместил файл дампа

mv database_dump /tmp

в каталог temp, а затем запустил

su -u postgres
cd /tmp
pg_restore database_dump

Если у вас большой дамп базы данных, вы можете просто создать другой каталог, в котором ваш текущий пользователь и пользователь postgres могут получить доступ к этому файлу дампа базы данных.

Ответ 13

Попробуйте выяснить, могут ли вам помочь следующие команды:

sudo su - yourdbuser
psql
\i yourbackupfile

Ответ 14

См. ниже пример его работы

C:/Program Files/PostgreSQL/9.4/bin\pg_restore.exe --host localhost --port 5432 --username "postgres" --dbname "newDatabase" --no-password --verbose

" C:\Users\Yogesh\Downloads\new Download\DB.backup"