Дампы в PostgreSQL: резервное копирование и восстановление

    Команда Simple-Server
    03.06.2026
    9 мин

    Материал подготовлен командой Simple-Server для администраторов VPS и выделенных серверов. Команды и пути проверяйте на тестовой машине перед production.

    Кратко о задаче

    В postgresql резервное копирование одной конкретной базы данных можно осуществить с помощью pg_dump. Во работы этой утилиты пользователь может обращаться к БД: записывать или читать данные.

    Формат дампа пользователь определяет сам. Это может быть архив или скрипт. Скрипт - это текстовый файл с перечнем SQL команд. Восстановление БД с помощью скрипта реализуется несколькими путями:

    • выполнение скрипта в консольном клиенте PostgreSQL;
    • выполнение такой psql-команды:
    psql [имя БД] < [SQL скрипт postgresql dump database]

    Восстановления БД с помощью архива реализуется утилитой pg_restore.

    Что выбрать: скрипт или архив? Зависит от вашей БД и цели резервного копирования. Если вы хотите перенести БД на другую машину в PostgreSQL, то подойдет скрипт. Архивы же устроены таким образом, что их можно переносить на другие платформы. Помимо прочего, восстановление с помощью pg_restore предоставит вам возможность настраивать сам процесс за счет параметров утилиты.

    Важно не забывать: pg_dump создает дамп только одного экземпляра БД. При наличии глобальных объектов PostgreSQL необходимо использовать утилиту pg_dumpall, речь о которой пойдет дальше.

    pg_dump [параметры для подключения] [параметры дампа] [имя БД*] > [каталог, куда необходимо сохранить backup postgres database]
    • -d [name] или --dbname=[name]: имя БД. Равнозначно [имя базы данных].
    • -h [name] или --host=[name]: имя сервера. По умолчанию host = PGHOST.
    • -p [port] или --port=[port]: порт. По умолчанию port = PGPORT.
    • -U [name] или --username=[name]: имя пользователя.
    • -a или --data-only: сохраняем только данные. Например, при использовании этого параметра связи между таблицами не сохраняются.
    • -b или --blobs: добавляем в дамп большие объекты. Этот параметр используется по умолчанию.
    • -B или --no-blobs: не сохраняем большие объекты.
    • -c или --clean: добавляем в скрипт команды DROP. Может понадобится при наличии объектов с одинаковыми именами. Применим только к SQL скриптам.
    • -C или --create: добавляем в скрипт команды для создания БД и подключения к ней. Применимо только к SQL скриптам.
    • -E кодировка или --encoding=кодировка: устанавливаем определенную кодировку дампа.
    • -f [catalog] или --file=[catalog]: каталог, куда сохраняем дамп. Параметр равнозначен указанному в синтаксисе [каталог, куда необходимо сохранить дамп БД]
    • -F [format] или --format=[format]: формат дампа. В postgresql format может принимать следующие значения:
    * p или plain: SQL скрипт. Значение по умолчанию. * c или custom: архив. * d или directory: каталог. * t или tar: формат .tar
    • -j [count] или --jobs=[count]: выполняем утилиту в многопоточном формате (количество потоков = [count]).

    • -n [schema] или --schema=[schema]: сохраняем схемы, удовлетворяющие шаблону.

    • -N [schema] или --exclude-schema=[schema]: не сохраняем схемы, удовлетворяющие шаблону.

    • -o или --oids: сохраняем OID.

    • -O или --no-owner: не добавляем в скрипт команды, связанные с установкой владельцев.

    • -s или --schema-only: сохраняем только схемы.

    • -t [schema] или --table=[schema]: сохранить таблицы, удовлетворяющие шаблону.

    • -T [schema] или --exclude-table=[schema]: не сохраняем таблицы, удовлетворяющие шаблону.

    • -x или --no-privileges или --no-acl: не сохраняем права доступа.

    • -Z [0..9] или --compress=[0..9]: выбираем уровня сжатия (0 - не сжимать, 9 - максимальный).

    • p или plain: SQL скрипт. Значение по умолчанию.

    • c или custom: архив.

    • d или directory: каталог.

    • t или tar: формат .tar

    Pg_dumpall создает бэкап целого кластера или инстанса. Результат работы утилиты - SQL скрипт. Во многих аспектах эта утилита похожа на pg_dump.

    pg_dumpall [параметры для подключения] [параметры дампа] > [каталог, куда необходимо сохранить дамп]
    • -d [connection string] или --dbname=[connection string]: задаем строку подключения.
    • -h [name] или --host=[name]: имя сервера. По умолчанию host = PGHOST.
    • -p [port] или --port=[port]: порт. По умолчанию port = PGPORT.
    • -U [name] или --username=[name]: имя пользователя.
    • -l [name] или --database=[name]: выбираем БД, через которую загрузим глобальные объекты.
    • -a или --data-only: сохраняем только данные. Например, при использовании этого параметра связи между таблицами не сохраняются.
    • -c или --clean: добавляем в дамп команды DROP перед CREATE. Может понадобится при наличии объектов с одинаковыми именами.
    • -f [catalog] или --file=[catalog]: каталог, куда сохраняем дамп. Параметр равнозначен указанному в синтаксисе [каталог, куда необходимо сохранить дамп]
    • -g или --globals-only: сохраняем только глобальные объекты.
    • -o или --oids: сохранять OID.
    • -O или --no-owner: не добавляем в скрипт команды, связанные с установкой владельцев.
    • -r или --roles-only: сохраняем только роли.
    • -s или --schema-only: сохраняем только схемы.
    • -t или --tablespaces-only: сохраняем только табличные пространства.
    • -x или --no-privileges или --no-acl: не сохраняем права доступа.

    Pg_basebackup - это утилита для создания бэкапа всего инстанса или кластера. Результат работы - дамп в бинарном формате. Сам процесс нельзя настроить: вы сохраняете кластер (инстанс) целиком. В postgresql список пользователей, обладающих правом создания дампа с помощью pg_basebackup, ограничен. Для этого необходимо быть суперпользователем или обладать правом REPLICATION.

    pg_basebackup [параметры для подключения] [параметры создания резервной копии]
    • -d [connection string] или --dbname=[connection string]: задаем строку подключения.
    • -h [name] или --host=[name]: имя сервера. По умолчанию host = PGHOST.
    • -p [port] или --port=[port]: порт. По умолчанию port = PGPORT.
    • -U [name] или --username=[name]: имя пользователя.
    • -D [catalog] или --pgdata=[catalog]: каталог, каталог, куда сохраняем дамп.
    • -F [format] или --format=[format]: формат дампа. Может иметь следующие значения:
    * p или plain: обычные файлы; * t или tar: формат .tar;
    • -r [speed]или --max-rate=[speed]: задаем максимальную скорость передачи данных в Кб/с

    • -Z [0..9] или --compress=[0..9]: выбираем уровня сжатия (0 - не сжимать, 9 - максимальный).

    • p или plain: обычные файлы;

    • t или tar: формат .tar;

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

    pg_restore [параметры для подключения] [параметры восстановления] [дамп базы данных]
    • -h [name] или --host=[name]: имя сервера. По умолчанию host = PGHOST.

    • -p [port] или --port=[port]: порт. По умолчанию port = PGPORT.

    • -U [name] или --username=[name]: имя пользователя.

    • -w или --no-password: отключаем запрос пароля.

    • -W или --password: принудительно включаем запрос пароля.

    • --role=[name]: задаем имя роли.

    • -a или --data-only: восстанавливаем только данные.

    • -c или --clean: удаляем одноименные объекты перед восстановлением.

    • -C или --create: создаем БД перед восстановлением.

    • -d [name] или --dbname=[name]: подключаемся к [name] БД и восстанавливаем данные в неё.

    • -e или --exit-on-error: завершаем восстановление в случае ошибки.

    • -j [count] или --jobs=[count]: осуществляем восстановление в многопоточном режиме ([count]=количество потоков)

    • -n [schema] или --schema=[schema]: восстанавливаем объекты только этой схемы.

    • -N [schema] или --exclude-schema=[schema]: не восстанавливаем объекты этой схемы.

    • -O или --no-owner: не восстанавливаем права на владение объектами.

    • -s или --schema-only: восстанавливаем только схему

    • -t таблица или --table=таблица: восстанавливаем только указанную таблицу.

    • -x или --no-privileges или --no-acl: не восстанавливаем права доступа.

    Wal-g - это сторонняя утилита для выгрузки дампов в хранилища и восстановления БД. Её действие распространяется не только на PostgreSQL, но и на другие СУБД. Wal-g поддерживает работу с несколькими типами хранилищ. Мы сосредоточимся на работе с S3.

    Wal-g работает в linux-системах, для работы на Win 10 необходимо использовать сервисы наподобие WSL. Работа с wal-g начинается с github, где расположены файлы утилиты. На вкладке releases размещены версии для различных систем и СУБД. Для установки последней версии wal-g на Ubuntu 20.04 выполняем эти команды:

    Для настройки wal-g можно воспользоваться как переменными окружения, так и конфигурационным файлом. Мы создадим конфигурационный файл для хранилища S3 по такому шаблону bash:

    За создание бэкапов в wal-g отвечает функция backup_push. Её можно использовать прямо в консоли следующим образом:

    su postgres -c ’/usr/local/bin/wal-g/wal-g backup_push *путь к данным БД или PGDATA*’

    pgAdmin — это утилита с графическим интерфейсом для создания дампов. Для начала работы переходим на сайт pgAdmin и загружаем подходящую версию программы:

    После загрузки и установки необходимо подключиться к серверу:

    Выгодные тарифы на облачные базы данных

    Мы рассмотрели несколько инструментов для создания резервных копий базы данных PostgreSQL и восстановления данных из них.


    Нужен сервер для практики? Арендуйте VPS/VDS в России — root-доступ, NVMe, DDoS-защита и поддержка 24/7.

    VPS для проекта

    VPS с root-доступом, NVMe и поддержкой 24/7 на Simple-Server.

    StarterVDS

    490₽

    в месяц

    1 ядро

    1 ГБ RAM

    20 ГБ NVMe

    • 1 IPv4
    • KVM
    • Root-доступ
    • Безлимитный трафик
    Заказать VPS
    Рекомендуем

    PerformanceVDS

    1190₽

    в месяц

    2 ядра

    4 ГБ RAM

    60 ГБ NVMe

    • 1 IPv4
    • KVM
    • Root-доступ
    • Базовая DDoS-защита
    Заказать VPS

    Нужна другая конфигурация или чистый VPS без панели?

    Все тарифы VPS

    Похожие статьи, которые могут быть вам интересны