Як відновити базу даних PostgreSQL з файлу .tar?


20

У мене є всі бази даних PostgreSQL, резервні копії під час покрокових резервних копій за допомогою WHM, що створює $ dbName. файл tar .

Дані зберігаються в цих файлах .tar, але я не знаю, як відновити їх назад в окремі бази даних через SSH. Зокрема розташування файлу.

Я використовую:

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

яка генерує помилку "не вдалося відкрити вхідний файл: дозвіл відхилено"

Будь-яка допомога вдячна.


Чи має користувач, з яким виконується ця команда, доступ до цього файлу?
— мат.

Привіт Мате, ти би так подумав (працює як root), але щойно вирішив проблему після багатьох комбінацій та переміщення сировинного файлу .tar до tmp .... pg_restore -c -i -U postgres -d client03 -v "/tmp/client03.tar" -W В кінці -W був основним трюком, який змусив ввести пароль як потрібно, що дозволило все зібрати разом.
— Стівен

Відповіді:


24

Знайдено правильний рядок коду, якщо хтось інший знайде цю тему.

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)

Сподіваюсь, вищесказане допомагає комусь іншому.


як це зробити з tar.gz?
— ері

2

Під час використання для мене відновлення 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

Я не впевнений, що він може імпортувати файл .tar. Я б зробив

tar -zxvf client03.tar 

витягніть все, що було у файлі, і спробуйте pg_restore ще раз. Я знаю, що pg_restore працює, оскільки у нас є той самий метод відновлення з реставрацій з голих металів.


1
Привіт Стівен, так, мабуть, може, мені знадобилося певний час, щоб отримати правильний код і перенести файл у папку з дозволом на доступ :)
— Стівен,

"-Z" поверне помилку, оскільки це лише дьоготь, а не стиснута gzip.
— Олексій

Алекс на 100% правильний.
— Стівен Томпсон,

0

Нижче для мене створено файл 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

Для версії 9.5 виконайте наступне в командному рядку

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


0

КОНСОЛЬ GNU / LINUX:

pg_restore -h 127.0.0.1 -p 5432 -U "postgres" -d "dvdrental_tpl" -v "/var/backups/dvdrental.tar";

- Докладна інформація

pg_restore - допомогти

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.