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

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

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

15 ответов


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

ваш первый источник ссылки должен быть man page pg_dump(1) как это то, что создает сам дамп. Он говорит:

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

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

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

восстановление довольно легко:

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

или

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

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


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

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"

важно -ч на localhost опции


возможно, Вам потребуется войти в систему как 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 

переключатель -F указать формат файла резервной копии:

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

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

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

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

помощью pg_dump/psql в

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

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

pg_dump -U username -f backup.sql database_name

восстановить:

psql -d database_name -f backup.sql

POSTGRESQL 9.1.12

свалка:

pg_dump -U user db_name > archive_name.sql

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

восстановить:

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

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


ниже моя версия 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 хоста -p порт -u имя пользователя для входа, -d имя базы данных


резервное копирование и восстановление с помощью 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


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

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

1.откройте терминал.

2.резервное копирование базы данных с помощью следующей команды

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

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

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

ваше исходное имя БД-mydatabase

/опт/в PostgreSQL/9.1/bin/, и помощью pg_dump --хост 192.168.1.111' --порт 5432 --имя пользователя "и Postgres" -- нет-пароль --формат пользовательский --blobs --file " / home/dinesh/db / mydb.backup" "mydatabase"

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

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

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

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

/ opt / PostgreSQL / 9.1 / bin / psql-h 'localhost' - p 5432-U postgres-c " создать базу данных данных mydatabase"

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

/ opt/PostgreSQL/9.1/bin/pg_restore --host 'localhost' --порт 5432 --имя пользователя "postgres" --dbname "mydatabase" --No-password --clean "/home/dinesh/db / mydb.резервное копирование"


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

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

psql dbname < infile

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

psql dbname < infile username

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

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

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

sudo su - yourdbuser
psql
\i yourbackupfile

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

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

psql-h localhost-p 5432-U postgres

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


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

mv database_dump /tmp

в каталог temp, а затем побежал

su -u postgres
cd /tmp
pg_restore database_dump

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


если вы хотите сделать резервную копию данных или восстановить данные из резервной копии, можно выполнить следующие команды:

1 чтобы создать резервную копию данных, перейдите в каталог postgres \bin\ like C:\programfiles\postgres\bin\ и введите следующую команду - pg_dump -FC -U ngb -d ngb -p 5432 >C:\BACK_UP\ngb.090718_after_readUpload.backup

2 чтобы восстановить данные из резервной копии, перейдите в каталог postgres \bin\ like C:\programfiles\postgres\bin\ и затем введите следующую команду - C:\programFiles\postgres\bin> pg_restore -Fc -U ngb -d ngb -p 5432 <C:\ngb.130918.backup

пожалуйста, убедитесь, что файл резервной копии существует.


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

C:/Program файлы / PostgreSQL/9.4 / bin\pg_restore.ехе --хостом localhost --порт 5432 --имя пользователя "сервер" --имя_бд "newDatabase" ... нет-пароль параметром --verbose

"C:\Users\Yogesh\Downloads\new скачать\DB.резервное копирование"