відновлення бази даних Postgres: pg_restore -vs- просто за допомогою psql


16

Я скидаю свою базу даних Postgres за допомогою pg_dump (у простому текстовому форматі), а потім відновлюю її просто за допомогою psql-fопцією).

Хто задає питання: чи я щось пропускаю, не використовуючи pg_restore, який здається спеціалізованим інструментом відновлення (порівняно з загальним psql)?

Я можу керувати такими параметрами, як відключення тригерів і подібних, використовуючи pg_dumpпараметри. Для чого тоді pg_restoreвикористовується? неформатні текстові формати дампа?


4
З посібника : " pg_restore - це утиліта для відновлення бази даних PostgreSQL з архіву, створеного pg_dump в одному з непрості текстових форматів "
a_horse_with_no_name

Відповіді:


19

Якщо ви створили дамп у форматі SQL, все, що ви можете використовувати, - це psql.

Якщо ви створили дамп власного формату ( pg_dump -Fc) або каталогу-формату ( pg_dump -Fd), ви можете і потрібно використовувати pg_restore.

Спеціальні звалища у форматі та каталогах пропонують безліч переваг перед звичайними скидами скриптів SQL, і я використовую їх виключно. Ви можете вибірково відновлювати лише деякі таблиці / схему, вибирати, чи потрібно включати лише схему, лише дані, або обидва в час відновлення і т. Д. Багато параметрів, які потрібно вказати під pg_dumpчас скидів у форматі SQL, можна вибрати при відновленні- час, якщо ви використовуєте дамп у власному форматі та pg_restore.

Якщо б це не було зворотною сумісністю, я впевнений, що за замовчуванням pg_dumpбув би -Fc(спеціальний) формат.

Ви не можете конвертувати дамп у форматі SQL у користувацький формат чи формат каталогів, не відновлюючи його до бази даних PostgreSQL, а потім скидаючи відновлену БД.


Чи можливо також пакетне перейменування функцій та обробка даних, як ви могли, у файл sql з хорошим regexp?
велоп

1
Ні, але ви можете pg_restoreбез dbnameаргументу перетворити його на дамп у форматі SQL, якщо він потрібен. Ви не можете зробити реверс.
Крейг Рінгер

@CraigRinger Чи є різниця в швидкості, використовуючи psql проти використання pg_dump для відновлення?
Нікунд Сардхара

2
@NikunjSardhara Не зазвичай, але pg_restoreпідтримує паралельне відновлення, і якщо ви використовуєте, це буде ШМАТО швидше.
Крейг Рінгер
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.