Архивирование и восстановление
Для архивирования и восстановления в СУБД Pangolin используется система резервного копирования и репликации. Она включает в себя утилиты для резервного копирования и восстановления (например, pg_probackup
), а также для потоковой и логической репликации.
Система резервного копирования СУБД Pangolin позволяет защитить данные от потери в случае отказа оборудования, ошибок оператора, ошибок приложений, проблем сервисных служб, а также используется для целей аудита.
Функции системы:
- резервное копирование и восстановление данных СУБД Pangolin;
- создание полной резервной копии по расписанию;
- снятие резервных копий с любого сервера кластера высокой доступности;
- возможность хранения метаданных на отдельном служебном сервере;
- дедупликация;
- восстановление состояния на определенный момент времени (в соответствии с политиками хранения копий);
- обеспечение соответствия нефункциональным требованиям к системам уровня Mission critical.
В этом разделе рассматриваются следующие сценарии восстановления из резервной копии:
- Полное восстановление кластера. Например, кластер полностью неработоспособен и требуется восстановление из последней резервной копии всего кластера.
- Восстановление на определенный момент времени. Например, изменения в БД привели к сбою или потере данных. БД находится в рабочем состоянии, но требуется восстановление данных на определенный момент времени до сбоя. Также используется при миграции, для тестирования и аудита.
- Создание резервного сервера. Например, в результате сбоя на предыдущем резервном сервере БД на нем оказывается недоступна, требуется восстановление из резервной копии.
В качестве сетевой централизованной системы хранения резервных копий используется служебная база данных (далее - «Каталог»). Интеграция с Каталогом позволяет выполнять резервное копирование экземпляров СУБД и связанных с ними файлов журналов записи с опережением (файлы Write Ahead Log, WAL).
Резервное копирование файлов WAL обеспечивает целостность данных СУБД Pangolin. Такая резервная копия позволяет использовать таблицы базы данных во время сеанса без каких-либо ограничений.
Резервное копирование с ведомого сервера кластера производится в автоматизированном режиме с помощью клиентского приложения (Далее - «Агент»). Выполняется либо снятие полной резервной копии, либо архива файлов WAL, накопившихся со времени последней резервной копии.
Восстановление инициируется пользователем и предполагает ручное указание параметров восстановления. СУБД потребуется учетная запись с правами на создание резервных копий: отдельная роль с минимальными правами, необходимыми для выбранной стратегии копирования. Управление функциями рез ервного копирования Pangolin выполняется специалистами по резервному копированию.
Поддержка резервного копирования настраивается в конфигурационном файле custom_file.yml
через параметр SRC
(резервная копия системы).
Резервное копирование
СУБД Pangolin, как и все современные СУБД, поддерживает возможность резервного копирования для защиты данных от потери в случае отказа оборудования, ошибки администратора, ошибок приложений, проблем сервисных служб, а также для помощи при миграции данных на новые сервера. Начиная с версии 4.1.0, добавлены улучшения, упрощающие мониторинг, управление и интеграцию с различными системами резервного копирования (СРК):
manage_backup.bin
входит в пакет Manage Backup Tools и устанавливается в каталог/opt/pangolin-backup-tools-1.1.0/bin
на сервере с БД при интеграции Pangolin c СРК.pgse_backup
– расширение, включающее набор представлений и процедур для организации и контроля мониторинга прохождения заданий резервного копирования;pg_probackup
– утилита резервного копирования для подготовки и контроля архивов резервной копии.
Главные функции резервного копирования:
- создание полной резервной копии данных;
- резервное копирование файлов WAL (Write Ahead Log) для обеспечения целостности данных;
- восстановление данных из резервной копии;
- восстановление на определенный момент времени (Point-in-Time Recovery или PITR);
- интеграция с системами резервного копирования.
Резервное копирование экземпляра СУБД Pangolin осуществляется Python-скриптом manage_backup.bin
.
Этот скрипт автоматизирует вызовы стандартных функций управления резервным копированием Pangolin: pg_start_backup
, pg_stop_backup
.
При запуске скрипта создается отдельный процесс с подключением к libpq
. Одновременно может быть выполнено только одно резервное копирование. Если существует старый сеанс резервного копирования, новое резервное копирование не будет запущено. Ошибки могут быть обнаружены в журнале postgres и в файле backup_manager.log
в каталоге (по умолчанию /pgarclogs/[pangolin_<major_version>]
) резерв ного копирования pg_probackup
.
Пример:
/usr/local/pgsql/postgres_venv/bin/python3 manage_backup.py --host 127.0.0.1 -p 5432 -U user -d db -B <path_to_label_dir> --session-id=<SESS> start
# copy data from $PGDATA...
/usr/local/pgsql/postgres_venv/bin/python3 manage_backup.py --host 127.0.0.1 -p 5432 -U user -d db -B <path_to_label_dir> --session-id=<SESS> stop
Резервное копирование журналов предзаписи (WAL) в режиме онлайн осуществляется с помощью утилиты pg_probackup
. Таким образом обеспечивается целостность резервной копии и возможность восстановления данных н а любой момент времени (Point-in-Time Recovery, PITR).
Такая резервная копия позволяет активно использовать таблицы базы данных во время сеанса без каких-либо ограничений в использовании. Также при использовании СРК присутствует возможность выбирать между интерактивным и запланированным резервным копированием. Снятие полной резервной копии или архива WAL (журналов, накопившихся со времени последней резервной копии) может производиться в автоматизированном режиме с помощью клиентского приложения (агента) СРК с ведомого сервера кластера. Восстановление происходит по запросу вследствие инцидента либо запланированных работ и предполагает ручное указание параметров восстановления.
Более подробно о работе pg_probackup
можно ознакомиться на страницах официальной документации проекта.