Вопрос: Как восстановить базу данных PostgreSQL из .tar-файла?


У меня есть все базы данных PostgreSQL, резервные копии которых выполняются во время инкрементных резервных копий с использованием WHM, который создает $ dbName.деготь файл.

Данные хранятся в этих .tar-файлах, но я не знаю, как восстановить их обратно в отдельные базы данных через SSH. В частности, расположение файла.

Я использую:

pg_restore -d client03 /backup/cpbackup/daily/client03/psql/client03.tar

который генерирует ошибку ', не смог открыть входной файл: Permission denied'

Любая помощь была оценена.


16
2018-02-21 04:43


Источник


Имеет ли пользователь, с которым выполняется эта команда, доступ к этому файлу? - mat
Привет, Mat, вы бы так подумали (работает от имени root), но только что решили проблему после многих комбинаций и переместили исходный файл .tar в tmp .... pg_restore -c -i -U postgres -d client03 -v «/tmp/client03.tar» -W В конце концов -W был основным трюком, который принудительно вводил пароль, который требовал, чтобы все было возвращено вместе. - Stephen


Ответы:


Найдена правильная строка кода, если кто-то другой найдет этот поток.

pg_restore -c -i -U postgres -d client03 -v "/tmp/client03.tar" -W

Разрыв был http://www.postgresql.org/docs/7.3/static/app-pgrestore.html и немного проб и ошибок.

По существу ...

-c to clean the database
-i to ignore any database version checks
-U to force a user
-d to select the database
-v verbose mode, don't know why
"$$" the location of the files to import in tmp to get around permission issues
-W to force asking for the password to the user (postgres)

Надеюсь, что выше помогает кому-то другому.


19
2018-02-21 09:23



как сделать то же самое с tar.gz? - eri


Я не уверен, что он может импортировать файл .tar. Я бы сделал

tar -zxvf client03.tar 

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


1
2018-02-21 09:17



Привет, Стивен, да, возможно, это может быть, мне просто потребовалось некоторое время, чтобы получить правильный код, и отбросить файл в папку с разрешением для доступа :) - Stephen
«-Z» вернет ошибку, так как это просто tar, а не сжатый с помощью gzip. - Alex
Алекс на 100% прав. - Stephen Thompson


При использовании PgAdmin III для восстановления для меня он работал безупречно, используя следующую команду, которая сама построила:

pg_restore --host localhost --port 5432 --username "my_user_name" --dbname "my_db_name" --role "my_user_name" --no-password  --verbose "/Users/me/Desktop/backup_file.tar"

Примечание. Чтобы избежать предупреждений, неплохо иметь роль владельца объектов в файле резервной копии, уже существующим на целевом сервере. Также вы должны уже создать целевую БД, созданную и принадлежащую этой роли.


1
2018-06-10 23:02





Ниже было создано для меня из pgAdmin iii, нажав на базу данных и щелкнув правой кнопкой мыши и выбор восстановления. Я перешел к файлу .tar, который у меня был, и он сделал это сам.

/usr/bin/pg_restore --host localhost --port 5434 --username "postgres" \
--dbname "dvdrental" --no-password  --schema public --verbose \
"/home/npena/Desktop/dvd/dvdrental.tar"

0
2017-09-13 22:40





Для версии 9.5 запустите в командной строке следующее:

pg_restore -W -c -U [username] -d [database_name] -v "[path to extracted tar]"


0
2017-12-09 17:25