Postgresql Backup: описание, возможности, инструкция по работе

Резервное копирование баз данных 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, дополнительной установки не требуется. Необходимо:

  1. Установить PostgreSQL (если еще не установлен)
  2. Создать отдельного пользователя в 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 требуется:

  1. Создать слот репликации на основном сервере
  2. Настроить параметры в recovery.conf на реплике
  3. Запустить службы репликации ицонтинуоус 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, требуется срочно восстановить БД из резервной копии.

Подготовка к восстановлению

На этапе подготовки необходимо:

  1. Определить причину сбоя и устранить ее
  2. Подготовить чистую ОС под восстановление БД
  3. Скачать последний доступный бэкап БД

Восстановление базы данных из резервной копии

Далее при помощи инструмента pg_restore или barman recover выполняется непосредственно восстановление базы данных из бэкапа.

Проверка работоспособности восстановленной БД

После восстановления требуется выполнить комплекс проверочных мероприятий и удостовериться в полной работоспособности восцтановленной из backup БД.

Статья закончилась. Вопросы остались?
Комментарии 0
Подписаться
Я хочу получать
Правила публикации
Редактирование комментария возможно в течении пяти минут после его создания, либо до момента появления ответа на данный комментарий.