Восстановить резервный файл 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"