pg_dump — основной инструмент, когда нужно создать дамп базы данных
PostgreSQL. Он прост в использовании и гибкий в настройках. Главное преимущество — возможность выгрузить структуру и данные в удобном для восстановления формате.
Чтобы выгрузить базу, используют команду:
pg_dump -U postgres mydb > mydb_backup.sqlЗдесь:
- -U postgres — имя пользователя,
- mydb — название базы данных,
- > — перенаправление вывода в файл.
Если нужно скопировать базу данных PostgreSQL частично (например, только структуру без данных), используют флаг
--schema-only:pg_dump -U postgres --schema-only mydb > schema.sqlДля обратной задачи — экспортировать только данные — подходит
--data-only:
pg_dump -U postgres --data-only mydb > data.sqlМожно указать формат вывода. По умолчанию создаётся SQL-файл, но
pg_dump также поддерживает сжатый формат (-Fc) — его удобно использовать с утилитой
pg_restore:
pg_dump -U postgres -Fc mydb > mydb.dumpЧтобы включить все базы и роли, используют pg_dumpall:
pg_dumpall -U postgres > all_dbs.sqlВажно:
pg_dump не блокирует доступ к базе, поэтому его можно применять в рабочих системах. Однако при больших объёмах данных стоит быть готовым к временной нагрузке на диск и процессор.
Этот способ удобен, когда нужно сохранить БД в PostgreSQL вручную или внедрить его в скрипт резервного копирования. Далее рассмотрим альтернативный вариант —
pg_basebackup, подходящий для создания полной физической копии кластера.