it-swarm.xyz

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

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

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

176
TwixxyKit

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

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

Дампы могут быть выведены в сценарии или форматы архивных файлов. Скрипты дампов текстовые файлы, содержащие SQL Команды, необходимые для восстановления база данных до состояния это было в то время, когда он был сохранен. Для восстановить из такого скрипта, скормить его в PSQL (1). Файлы сценариев могут быть использованы восстановить базу данных даже на других машинах и прочее архитектуры; с некоторыми изменениями даже на других продуктах баз данных 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

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

223
Steven Schlansker

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

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

-F c - это пользовательский формат (сжатый и может работать параллельно с -j N) -b - включает в себя большие двоичные объекты, -v - подробный, -f - имя файла резервной копии.

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

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

важно установить -h localhost - option

131
pilot

Вам может потребоваться войти в систему как 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 должен создать базу данных перед импортом данных. Если это не работает, вы всегда можете создать базу данных, например. с командой (от имени пользователя postgres или другой учетной записи, имеющей права на создание баз данных) 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
58
Tombart

POSTGRESQL 9.1.12

DUMP:

pg_dump -U user db_name > archive_name.sql

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

ВОССТАНОВИТЬ:

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

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

40
Natan Medeiros

Ниже моя версия 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 имя базы данных

25
Yahor M

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

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

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

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

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

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

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

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

ваше имя базы данных источника - mydatabase

/opt/PostgreSQL/9.1/bin/pg_dump --Host '192.168.1.111' --port 5432 --username "postgres" --no-пароль - отформатировать пользовательские --blobs --file "/ home/dinesh/db /mydb.backup "" моя база данных "

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. резервное копирование"

6
Dinesh-SriLanka

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

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

psql dbname < infile

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

psql dbname < infile username
2
Maryam Saeidi

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

Sudo su - yourdbuser
psql
\i yourbackupfile
2
Mehmet Ali

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

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

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

1. At first, create a database using pgAdmin or whatever you want (for example my_db is our created db name)
2. Now Open command line window
3. Go to Postgres bin folder. For example:  cd "C:\ProgramFiles\PostgreSQL\pg10\bin"
4. Enter the following command to restore your database: psql.exe -U postgres -d my_db -f D:\Backup\backup_file_name.sql 

Введите пароль для вашего пользователя Postgres, если это необходимо, и позвольте Postgres выполнять свою работу. Затем вы можете проверить процесс восстановления.

1
Omar Hasan

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

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

psql -h localhost -p 5432 -U postgres <резервный файл

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

1
Prashant Kumar

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

2) Разархивируйте/распакуйте файл дампа.

3) Создать пустую базу данных.

4) используйте следующую команду для восстановления файла .dump

<database_name>-# \i <path_to_.dump_file>
1
Vaibhav Desai

пытаться:

pg_restore -h localhost -p 5432 -U <username> -d <dbname> -1 <filename>
1
Cristhian Gonzalez

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

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

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

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

0
Girjesh Kumar Suryawanshi

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

mv database_dump /tmp

во временный каталог, а затем побежал

su -u postgres
cd /tmp
pg_restore database_dump

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

0
user1876508

попробуй это:

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

Восстановить psql БД из файла .sql

0
Faysal Maqsood