PostgreSQL pg_dump: создать и восстановить дамп

Категория: Postgresql · Язык: Bash · Обновлено:

Для резервной копии PostgreSQL удобно использовать custom-формат: pg_dump -Fc -d app_db -f app_db.dump. Такой файл восстанавливают через pg_restore; сначала проверьте архив и восстанавливайте в отдельную базу, чтобы не перезаписать рабочие данные.

Создать архив и проверить его содержимое

Bash
pg_dump -Fc -d app_db -f app_db.dump
pg_restore --list app_db.dump | head -20

Команда использует настройки подключения PostgreSQL из окружения или .pgpass. Не передавайте пароль прямо в аргументах командной строки.

Восстановить в новую базу

Bash
createdb app_db_restore
pg_restore --dbname=app_db_restore --no-owner --no-privileges app_db.dump

Флаги --no-owner и --no-privileges полезны, если на целевом сервере нет исходных ролей. Если нужно восстановить владельцев и grants, создайте роли заранее и уберите эти параметры.

Команда

Формат

pg_dump -Fc

Custom archive, восстанавливается pg_restore

pg_dump -Fp

Обычный SQL-текст, восстанавливается psql

pg_restore --list

Показать содержимое custom-архива

Как восстановить plain SQL дамп?

Подключите его через psql -d app_db_restore -f app_db.sql. Формат -Fp — текстовый SQL, поэтому pg_restore для него не подходит.

Как понять, что восстановление прошло успешно?

Проверьте код завершения, список таблиц, ключевые количества записей и работу приложения на тестовом окружении.