Я новичок в postgresql и локально использую pgadmin3. Однако на удаленном сервере такой роскоши у меня нет.
Я уже создал резервную копию базы данных и скопировал ее, но есть ли способ восстановить резервную копию из командной строки? Я вижу только вещи, связанные с GUI или pg_dumps, так что, если кто-нибудь скажет мне, как это сделать, это будет потрясающе!
Есть два инструмента, которые нужно посмотреть, в зависимости от того, как вы создали файл дампа.
Первым источником информации должна быть справочная страница 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 (как указано в комментарии) перед восстановлением, в зависимости от того, как были созданы дампы.
создать резервную копию
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
Вам может потребоваться войти в систему как 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
POSTGRESQL 9.1.12
DUMP:
pg_dump -U user db_name > archive_name.sql
введите пароль пользователя и нажмите ввод.
ВОССТАНОВИТЬ:
psql -U user db_name < /directory/archive.sql
введите пароль пользователя и нажмите ввод.
Ниже моя версия 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.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. резервное копирование"
Как сказано ниже, вы можете использовать команду psql для восстановления файла дампа:
https://www.postgresql.org/docs/8.1/static/backup.html#BACKUP-DUMP-RESTORE
psql dbname < infile
если вам нужно установить имя пользователя, просто добавьте имя пользователя после команды, например:
psql dbname < infile username
Попробуйте посмотреть, могут ли вам помочь следующие команды:
Sudo su - yourdbuser
psql
\i yourbackupfile
Если вы создаете резервную копию с помощью pg_dump, вы можете легко восстановить ее следующим образом:
cd "C:\ProgramFiles\PostgreSQL\9.5\bin"
For example: psql.exe -U postgres -d YourDatabase -f D:\Backup\.sql
Если у вас есть резервный файл 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 выполнять свою работу. Затем вы можете проверить процесс восстановления.
Восстановление файла резервной копии postgres зависит от того, как вы взяли резервную копию в первую очередь.
Если вы использовали pg_dump с -F c или -F d, вам нужно использовать pg_restore, иначе вы можете просто использовать
psql -h localhost -p 5432 -U postgres <резервный файл
9 способов резервного копирования и восстановления баз данных postgres
1) Откройте терминал PSQL.
2) Разархивируйте/распакуйте файл дампа.
3) Создать пустую базу данных.
4) используйте следующую команду для восстановления файла .dump
<database_name>-# \i <path_to_.dump_file>
пытаться:
pg_restore -h localhost -p 5432 -U <username> -d <dbname> -1 <filename>
Если вы хотите сделать резервную копию ваших данных или восстановить данные из резервной копии, вы можете выполнить следующие команды:
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
Пожалуйста, убедитесь, что файл резервной копии существует.
У меня были проблемы с аутентификацией при запуске pg_dump, поэтому я переместил свой файл дампа
mv database_dump /tmp
во временный каталог, а затем побежал
su -u postgres
cd /tmp
pg_restore database_dump
Если у вас большой дамп базы данных, вы можете просто создать другой каталог, к которому ваш текущий пользователь и пользователь postgres могут получить доступ и поместить в него файл дампа базы данных.
попробуй это:
psql -U <username> -d <dbname> -f <filename>.sql
Восстановить psql БД из файла .sql