Як відновити базу даних 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.