Восстановить файл резервной копии 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
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 вы можете легко восстановить его следующим образом:
- открыть окно командной строки
- перейдите в папку Postgres bin. Например:
cd "C:\ProgramFiles\PostgreSQL.5\bin"
- введите команду для восстановления базы данных.
For example: psql.exe -U postgres -d YourDatabase -f D:\Backup\.sql
- введите пароль для пользователя postgres
- Проверьте процесс восстановления
попробуйте узнать, могут ли вам помочь следующие команды:
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.резервное копирование"