Сохранность данных одна из основных задач при работе с базами данных. Для этого создаются резервные копии. Восстановить базу PostgreSQL достаточно просто с использованием как стороннего, так и уже имеющего софта. Есть несколько специализированных программ, которые помогают автоматизировать и оптимизировать рабочий процесс. Стоит подробно рассмотреть, как в PostgreSQL сделать дамп базы данных.
Предварительные требования
Перед началом работы требуется наличие:
- Сервера БД для PostgreSQL. В правилах брандмауэра необходимо указать, что доступ к данному серверу разрешен.
- Установить в командной строке программы 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-приложение можно как на локальном устройстве, так и на сервере. Оно работает на различных операционных системах. Актуальную версию рекомендуется скачивать с официального сайта.
Заключение
Создавать резервные копии с помощью утилит достаточно просто. Необходимо выбрать подходящую, исходя из собственного опыта и задач проекта. Автоматизация процесса позволит освободить время системного администратора.
Создание резервных копий позволяет повысить отказоустойчивость системы, поэтому рекомендуется использовать их в проектах любого уровня. Чем чаще происходит изменение БД, тем чаще нужно создавать бэкап, чтобы в случае форс-мажора пришлось выполнять минимальную работу для восстановления потерянной информации.