Содержание:
Логические дампы и физическое копирование на уровне файловой системы представляют два принципиально различных подхода к резервному копированию, каждый из которых имеет строго определенные области применения в многопользовательских средах. Логические дампы, создаваемые утилитами pg_dump и pg_restore в PostgreSQL-семействе, выгружают данные в формате SQL или в собственном двоичном формате с возможностью выборочного восстановления отдельных таблиц или схем. Физическое копирование подразумевает создание копии файлов данных СУБД на уровне операционной системы, что обеспечивает максимальную скорость восстановления, но требует остановки базы данных или использования режима непрерывного архивирования.
В российских СУБД на базе PostgreSQL, включая Tantor и Postgres Pro, доступны оба метода, при этом логические дампы используются преимущественно для миграции данных между разными версиями или архитектурами, а также для выборочного резервирования небольших объемов информации. Физическое копирование применяется для полного резервирования крупных баз данных терабайтных размеров, где время создания логического дампа становится неприемлемо большим.
Непрерывное архивирование WAL-журналов
Механизм Point-In-Time Recovery через непрерывное архивирование журналов предзаписи (WAL) позволяет восстановить состояние базы данных на любой момент времени в прошлом с точностью до транзакции, комбинируя базовую физическую копию с последовательностью журналов изменений. В российских СУБД PostgreSQL-линейки WAL-журналы последовательно записываются в каталог pg_wal, и настроенный процесс архивации копирует заполненные сегменты в удаленное хранилище по завершении каждой транзакции. Настройка архивации требует указания в конфигурационном файле postgresql.conf параметров archive_mode и archive_command, где прописывается команда копирования сегментов в сетевое хранилище, на ленточный накопитель или в облачный сервис. Хранение журналов организуется с политикой ротации, например, сохранение всех сегментов за последние 30 дней или до достижения определенного объема, что определяется требованиями к глубине восстановления. Восстановление на момент времени выполняется последовательным применением журналов к базовой резервной копии до достижения требуемой временной метки или идентификатора транзакции.
Специализированные инструменты для PostgreSQL-семейства
pgBackRest стал стандартом де-факто для организации резервного копирования в PostgreSQL и его российских форках, поддерживая полные, инкрементальные и дифференциальные резервные копии с компрессией и шифрованием. Инструмент использует архитектуру с выделенным репозиторием, который может располагаться на локальных дисках, в сетевом хранилище или в объектном S3-совместимом хранилище, что обеспечивает гибкость при проектировании инфраструктуры резервирования. pgBackRest реализует параллельное копирование и восстановление с распараллеливанием по нескольким потокам, что критически важно для баз данных большого объема, где время простоя должно минимизироваться. В Tantor и Postgres Pro pgBackRest входит в базовую поставку с предварительно настроенными конфигурационными шаблонами для различных сценариев использования, включая интеграцию с системами мониторинга и оповещения о статусе резервного копирования. Инструмент также поддерживает проверку целостности резервных копий и автоматическое применение WAL-журналов при восстановлении, что сокращает время восстановления до актуального состояния.
Резервное копирование в ЛИНТЕР
ЛИНТЕР реализует собственные средства резервного копирования, интегрированные в ядро СУБД и поддерживающие аппаратное шифрование с использованием российских криптографических алгоритмов. Система позволяет создавать полные и инкрементальные копии на уровне табличных пространств с возможностью сжатия данных до помещения в архив. Особенностью ЛИНТЕР выступает поддержка резервирования без остановки обслуживания пользователей благодаря механизмам захвата моментальных снимков состояния базы данных на физическом уровне. Утилита lbackup обеспечивает создание резервных копий в файловое хранилище, на ленточные накопители или в сетевые папки с поддержкой многопоточности и балансировки нагрузки при параллельном резервировании нескольких баз данных. Восстановление может выполняться как на исходное местоположение, так и на альтернативный сервер с автоматической подстройкой параметров окружения под новое аппаратное обеспечение.

Сравнение инструментов резервного копирования
|
Параметр |
Tantor / Postgres Pro (pgBackRest) |
ЛИНТЕР (lbackup) |
|
Поддерживаемые типы копий |
Полные, дифференциальные, инкрементальные |
Полные, инкрементальные |
|
Механизм инкрементальности |
На основе разницы в WAL с момента последней полной копии |
На основе измененных блоков данных |
|
Шифрование |
AES-256, поддержка внешних модулей |
ГОСТ 28147-89, аппаратные ускорители |
|
Сжатие |
LZ4, Zstandard (настраиваемый уровень) |
Встроенное с настройкой степени |
|
Поддержка S3-хранилищ |
Да, через плагины |
Нет, только файловые системы и ленты |
|
Параллельное восстановление |
Да, с настройкой количества потоков |
Да, автоматическое определение |
Восстановление при крупных сбоях
Процедуры восстановления после потери основного дата-центра строятся на комбинировании резервных копий, WAL-журналов и реплик, размещенных в географически удаленных локациях. При полной недоступности основного центра данных инициируется переключение на резервную реплику, если она работала в асинхронном или синхронном режиме, что минимизирует время простоя до минут вместо часов восстановления из архивов. Если реплика отсутствовала или была повреждена, восстановление начинается с развертывания последней полной резервной копии из удаленного хранилища с последующим применением всех накопившихся WAL-журналов до момента сбоя. В PostgreSQL-семействе этот процесс автоматизируется через утилиту pg_rewind при наличии хотя бы частично уцелевшей реплики или выполняется вручную с использованием pgBackRest. В ЛИНТЕР аналогичная процедура реализуется через встроенные средства восстановления с поддержкой каталогизации доступных резервных копий и автоматического выбора оптимальной последовательности применения журналов.
Тестирование восстановления
Регулярные проверки работоспособности резервных копий и процедур восстановления представляют обязательный элемент эксплуатации многопользовательских СУБД, поскольку резервная копия, которую невозможно восстановить, не имеет ценности. Тестирование включает периодическое развертывание копий на тестовых стендах с проверкой целостности данных и времени, затраченного на восстановление.
В российских СУБД практикуется автоматизация проверок через скрипты, которые в ночное время разворачивают свежую резервную копию на изолированном сервере и выполняют контрольные запросы к восстановленным данным. pgBackRest предоставляет команду check для верификации доступности репозитория и целостности хранящихся резервных копий без их полного развертывания. В ЛИНТЕР встроенные средства аудита резервных копий позволяют выявлять поврежденные архивы и инициировать повторное создание копий при обнаружении ошибок четности.
Практические рекомендации для многопользовательских сред
В многопользовательских системах с непрерывным режимом работы резервное копирование должно учитывать пиковые нагрузки и временные окна, когда создание копий минимально влияет на производительность. Полные резервные копии рекомендуется создавать в периоды наименьшей активности пользователей, например, в ночные часы или выходные дни, а инкрементальное копирование выполнять с интервалом, достаточным для минимизации потери данных при сбое. Для баз данных терабайтных объемов критически важно использовать параллельное копирование и скоростные каналы связи с хранилищем, чтобы укладываться в окно резервирования. Российские СУБД позволяют настраивать приоритеты операций резервного копирования через параметры пула ресурсов и ограничения скорости ввода-вывода. Хранение резервных копий должно организовываться по принципу 3-2-1: три копии данных на двух разных носителях, одна из которых находится в географически удаленном месте.