Резервное копирование баз данных PostgreSQL - важнейший элемент обеспечения их надежности и доступности. В этой статье мы подробно разберем основные инструменты, возможности и этапы настройки резервного копирования PostgreSQL.
Обзор инструментов резервного копирования PostgreSQL
Для резервного копирования БД PostgreSQL доступны следующие основные инструменты:
- pg_dump и pg_restore
- pg_basebackup
- Barman
- Wal-g
Рассмотрим каждый инструмент более подробно.
pg_dump и pg_restore
Это встроенные утилиты PostgreSQL для логической базы backup postgresql. Позволяют создавать и восстанавливать дамп БД, включая структуру БД и данные.
Плюсы:
- Простота использования
- Гибкость настройки
- Возможность выборочного backup-а отдельных объектов
Минусы:
- Высокая нагрузка на БД при создании дампов больших БД
- Требуются дополнительные скрипты для автоматизации
pg_basebackup
Утилита для создания физических бэкапов PostgreSQL.
Плюсы:
- Высокая скорость создания копий
- Минимальная нагрузка на БД
- Поддержка параллельной репликации
Минусы:
- Требуется больший объем дискового пространства
- Невозможность выборочного backup-а отдельных объектов
Barman
Инструмент для управления резервным копированием, восстановлением PostgreSQL и репликацией.
Плюсы:
- Автоматизация процессов backup, восстановления, репликации
- Возможность отката к определенной точке во времени (PITR)
- Веб-интерфейс управления и мониторинга
Минусы:
- Относительная сложность развертывания
Wal-g
Инкрементальное резервное копирование в облако на базе технологии WAL.
Плюсы:
- Высокая скорость создания копий
- Компактный размер бэкапов
- Поддержка хранения в облаке (S3)
Минусы:
- Высокие требования к сетевому подключению
Для наглядного сравнения возможностей инструментов приведем таблицу:
pg_dump | pg_basebackup | Barman | Wal-g | |
Бэкап логический | Да | Нет | Да | Нет |
Бэкап физический | Нет | Да | Да | Да |
Инкрементальный бэкап | Нет | Нет | Нет | Да |
Подготовка инфраструктуры для резервного копирования
Перед настройкой резервного копирования PostgreSQL необходимо подготовить инфраструктуру.
Аппаратное обеспечение
В зависимости от размера БД, необходимо обеспечить достаточную производительность сервера БД и дисковой подсистемы. Также важны резервирование ключевых компонентов (диски, блоки питания) и бесперебойное электропитание.
Настройка сети и брандмауэра
Для передачи бэкапов на удаленное хранилище требуется настроить сетевое соединение достаточной пропускной способности и обеспечить прохождение трафика backup через брандмауэры.
Выбор и подготовка хранилища
В качестве хранилищ бэкапов PostgreSQL можно использовать:
- Локальные NFS/SMB диски
- Удаленные NFS/SMB диски
- Облачные объектные хранилища (S3, Облако Mail.ru, Яндекс.Облако)
Необходимо позаботиться о достаточном объеме, производительности, надежности и информационной безопасности выбранного хранилища.
Настройка резервного копирования с pg_dump
Рассмотрим этапы настройки резервного копирования PostgreSQL при помощи утилит pg_dump и pg_restore.
Установка и настройка
Так как pg_dump и pg_restore входят в состав СУБД PostgreSQL, дополнительной установки не требуется. Необходимо:
- Установить PostgreSQL (если еще не установлен)
- Создать отдельного пользователя в PostgreSQL с правами backup БД
Синтаксис команд pg_dump и pg_restore
Для выполнения логического бэкапа используется команда pg_dump:
pg_dump <параметры> <БД>
Для восстановления - команда pg_restore:
pg_restore <параметры> <БД>
Параметры и примеры использования
Пример создания бэкапа БД mydb в архивный файл:
pg_dump -U backup_user mydb -Fc > mydb_backup.dump
Пример восстановления из бэкапа:
pg_restore -U backup_user -d mydb mydb_backup.dump
Для автоматизации процесса можно использовать скрипты и планировщик заданий cron/crontab.
Настройка репликации с Barman
Barman позволяет настроить резервное копирование PostgreSQL с репликацией для повышения отказоустойчивости и доступности данных.
Установка и настройка Barman
Barman можно установить на любой сервер под управлением Linux из репозитория или исходного кода. После установки необходимо создать конфигурационный файл barman.conf и задать в нем параметры:
- Сервер БД PostgreSQL
- Пользователь репликации
- Каталог хранения бэкапов
- Используемое хранилище WAL
Конфигурирование репликации
Для настройки потоковой репликации PostgreSQL требуется:
- Создать слот репликации на основном сервере
- Настроить параметры в recovery.conf на реплике
- Запустить службы репликации ицонтинуоус archiving
Мониторинг и управление репликами
В Barman имеются встроенные средства мониторинга статуса репликации. Кроме того, для управления резервным копированием из командной строки можно использовать утилиту barman.
Например, для выполнения backup:
barman backup <имя_сервера>
Восстановление из backup
Чтобы восстановить PostgreSQL из бэкапа, созданного Barman, используется команда:
barman recover <имя_сервера> <идентификатор_бэкапа>
Поддерживается восстановление на любую заданную точку времени (PITR).
Резервное копирование в облако с Wal-g
Рассмотрим особенности настройки инкрементального резервного копирования PostgreSQL в облако с помощью утилиты Wal-g.
Установка и настройка
Wal-g можно установить из исходников или дистрибутивов на любой платформе с поддержкой Go.
Для настройки необходимо создать конфиг в формате JSON со следующими параметрами:
- Путь к БД PostgreSQL
- Пользователь БД
- Параметры подключения к хранилищу (S3)
Интеграция Wal-g c S3 и файловыми системами
Помимо S3, Wal-g умеет работать с различными файловыми системами, а также облачными хранилищами SWIFT, Azure, Google Cloud Storage.
Параметры команд wal-g
Основные команды Wal-g:
wal-g backup - создать бэкап wal-g backup-fetch - выборочно восстановить бэкап wal-g restore - полностью восстановить БД
Поддерживается инкрементальное и дифференциальное резервное копирование.
Пример: резервное копирование в Объектное хранилище
Рассмотрим пример настройки Wal-g с резервным копированием в Объектное хранилище Selectel.
Мониторинг и управление резервным копированием
Для обеспечения надежности процесса резервного копирования БД PostgreSQL требуется его непрерывный мониторинг и управление.
Настройка уведомлений
Важно получать оповещения о сбоях и ошибках при выполнении бэкапов. Для этого можно использовать:
- Логи сервера БД и инструментов backup
- Системы мониторинга типа Zabbix, Nagios
- Уведомления по email/телеграм
Анализ логов резервного копирования
Необходим регулярный анализ логов на предмет сбоев, предупреждений, отклонений от штатного режима работы.
Тестирование восстановления из резервной копии
Очень важно периодически проверять возможность корректного восстановления БД из резервной копии, например раз в месяц.
Оценка производительности и оптимизация
Стоит оценивать длительность различных этапов резервного копирования и оптимизировать наиболее долгие из них путем настройки конфигурации сервера, сети или параметров инструментов backup.
Аварийное восстановление PostgreSQL из backup
Если произошел сбой PostgreSQL, требуется срочно восстановить БД из резервной копии.
Подготовка к восстановлению
На этапе подготовки необходимо:
- Определить причину сбоя и устранить ее
- Подготовить чистую ОС под восстановление БД
- Скачать последний доступный бэкап БД
Восстановление базы данных из резервной копии
Далее при помощи инструмента pg_restore или barman recover выполняется непосредственно восстановление базы данных из бэкапа.
Проверка работоспособности восстановленной БД
После восстановления требуется выполнить комплекс проверочных мероприятий и удостовериться в полной работоспособности восцтановленной из backup БД.