ProCloud Yandex
20.06.2023
читать 4 минуты

Перенос базы данных PostgreSQL с помощью дампа и ее восстановление

/upload/iblock/5c4/ols6qc07hh9113dcsedyj4w7usnybpwq/postgresql_backup.jpeg.jpg

Сохранность данных одна из основных задач при работе с базами данных. Для этого создаются резервные копии. Восстановить базу PostgreSQL достаточно просто с использованием как стороннего, так и уже имеющего софта. Есть несколько специализированных программ, которые помогают автоматизировать и оптимизировать рабочий процесс. Стоит подробно рассмотреть, как в PostgreSQL сделать дамп базы данных.

Предварительные требования

Перед началом работы требуется наличие:

  1. Сервера БД для PostgreSQL. В правилах брандмауэра необходимо указать, что доступ к данному серверу разрешен.
  2. Установить в командной строке программы pg_dump (для извлечения БД в файл дампа) и  pg_restore (для восстановления БД из файла архива).

Создание дампа с нужными данными для загрузки

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

pg_dump -Fc -v --host=localhost --username=masterlogin --dbname=<database name> -f testdb.dump

Во втором случае:

pg_dump -Fc -v --host=<host> --username=<name> --dbname=<database name> -f <database>.dump.

Восстановление данных в целевую БД

Когда целевая БД будет создана, можно применить команду pg_restore – восстановление базы из дампа.

pg_restore -v --no-owner --host=<server name> --port=<port> --username=<user-name> --dbname=<target database name> <database>.dump

Если использовать параметр --no-owner, то все объекты, которые были восстановлены, автоматически присваиваются пользователю, который будет отмечен в параметре --username. Более подробную информацию об этом можно найти в открытых источниках или документации PostgreSQL.

Важно. Иногда сервер требует наличие  соединений TLS и SSL, но они на нем отсутствуют по каким-то причинам. Тогда нужно применить переменную PGSSLMODE=require. Иногда утилита работает без данного протокола, но есть высокий риск появления ошибки FATAL. Тогда администратору сети перед выполнением pg_restore нужно выполнить команду

SET PGSSLMODE=require

если у вас операционная система Windows. При использовании ОС Linux нужно будет прописать команду

export PGSSLMODE=require

Рассмотрим еще несколько команд более подробно.

Утилита pg_dumpall

Она позволяет реализовать бэкап всего кластера или инстанса. По принципу работы эта утилита очень похожа на pg_dump. Они обе позволяют создавать логические бэкапы. Все остальные упомянутые утилиты выполняют исключительно бинарные резервные копии.

Для сжатия бэкапа нужно передавать информацию на архиватор gzip

pg_dumpall | gzip > /tmp/instance.tar.gz

Это довольно простая и понятная в использовании утилита, поэтому многие системные администраторы применяют ее в своей работе.

Утилита pg_basebackup

Она позволяет выполнять бэкап работающего кластера БД PostgreSQL. Итоговый бинарный файл применяется для восстановления БД в конкретное состояние в прошлом. Отличительная возможность этой утилиты – создание полноценной копии. В данном случае создать  резервные копии отдельных сущностей не получится. Подключение к PostgreSQL происходит с использованием протокола репликации с правами админа или с правом REPLICATION.

С параметром --D, который обозначает директорию, где будет находиться бэкап. Параметры --Ft и --z отвечают за сжатие резервной копии.

Утилита wal-g

С помощью данной утилиты удается сохранять бэкапы на файловой системе или на серверах S3.

Готовый установочный пакет можно найти на github. Далее нам потребуется скопировать папку с исполняемыми файлами и заполнить конфигурационный файл. После этого можно задать настройки для автоматического создания бэкапов по расписанию. Рекомендуется первую резервную копию сделать вручную, чтобы проверить, что все настройки заданы правильно и сохранение происходит корректно.

Утилита pgAdmin

Эта утилита позволяет создавать резервные копии с использованием графического интерфейса. Запустить данное web-приложение можно как на локальном устройстве, так и на сервере. Оно работает на различных операционных системах. Актуальную версию рекомендуется скачивать с официального сайта.

Заключение

Создавать резервные копии с помощью утилит достаточно просто. Необходимо выбрать подходящую, исходя из собственного опыта и задач проекта. Автоматизация процесса позволит освободить время системного администратора.

Создание резервных копий позволяет повысить отказоустойчивость системы, поэтому рекомендуется использовать их в проектах любого уровня. Чем чаще происходит изменение БД, тем чаще нужно создавать бэкап, чтобы в случае форс-мажора пришлось выполнять минимальную работу для восстановления потерянной информации.

Новости
27 декабря 202327.12.2023
Продуктовый дайджест 2023
20 декабря 202320.12.2023
читать 2 минутычитать 2 мин
Новые тарифы и возможности