Введение
Давайте будем честными: если вы работаете с PostgreSQL, то рано или поздно вы задумаетесь, как обезопасить свои данные. Это как сбережения — пока всё хорошо, о резерве не думаешь, но стоит чему-то пойти не так, и вот вы уже жалеете, что не выделили пару часов на настройку.
PostgreSQL — одна из самых популярных баз данных в мире, и есть весомая причина, почему это так. Но даже самая надёжная система нуждается в защите. Поэтому сегодня я расскажу о модуле PostgreSQL Universal в системе RuBackup — решении, которое не просто создаёт резервные копии, а делает это с комфортом.
Эта статья будет интересна всем, кто:
ценит свои данные и не хочет их потерять;
уже работает с PostgreSQL и думает о безопасности;
просто любит разбираться в хороших инструментах, связанных с СУБД.
Мы поговорим о функциональности модуля, его особенностях и возможностях. Здесь вы найдёте полезную информацию, которая поможет вам настроить и использовать RuBackup для своих нужд.
Подробную информацию о системе RuBackup можно найти на официальном сайте.
Подготовка компонентов системы
Основной набор компонентов
Пройдемся кратко по установке и настройки модуля.
Перед установкой сервера RuBackup необходимо убедиться, что в системе есть все необходимые зависимости пакетов Linux. Это обеспечит корректную работу всех компонентов системы. Также нам потребуется минимальный набор сервисов RuBackup: rubackup_client, rubackup_server и RBM (RuBackup Manager):
rubackup_server — это центральный сервер, который управляет всеми задачами резервного копирования и взаимодействует с клиентами. Для штатной эксплуатации рекомендуется запускать сервер как сервис. rubackup_client — клиент, который отправляет данные на сервер для резервного копирования. Клиенты должны быть авторизованы через RBM или командную строку. Как и сервер, клиент рекомендуется запускать как сервис.
RBM (RuBackup Manager) — интерфейс для администрирования и управления сервером и клиентами. Он устанавливается на удалённый хост и предоставляет удобный доступ к настройкам и мониторингу системы. Пользователи, которые будут запускать RBM, должны входить в группу Rubackup.
Рекомендации по развертыванию:
Хотелось бы отметить, что это уже касается продуктивных окружений среднего и промышленного масштаба. В документации Rubackup рекомендуется разворачивать компоненты на отдельных машинах. Это позволит достичь максимальных показателей производительности и заметно ускорить работу системы.
Модуль PostgreSQL Universal
RuBackup поддерживает создание как полных (full), так и инкрементальных (incremental) резервных копий базы данных PostgreSQL. Полные резервные копии создают полное дублирование данных, а инкрементальные копии сохраняют только изменения с последней резервной копии, что значительно снижает объём копируемых данных.
Резервное копирование осуществляется по расписанию — это нужно для автоматизации процесса и снижения нагрузки на системы в рабочие часы.
Для этого используется модуль PostgreSQL Universal, предназначенный для резервного копирования и восстановления баз данных PostgreSQL. При настройке правил и стратегий резервного копирования можно выбрать один из подмодулей:
postgresql — использует низкоуровневый API PostgreSQL для выполнения резервного копирования.
pg_probackup — использует утилиту pg_probackup для резервного копирования баз данных Postgres Pro.
superb — обеспечивает непрерывное резервное копирование и восстановление PostgreSQL с архивированием WAL‑журналов.
Установка и настройка модуля PostgreSQL
Установка модуля PostgreSQL Universal в RuBackup оказалась довольно простой. При обновлении версии RuBackup на серверных узлах установка новых модулей, выполняется вместе с обновлением пакета rubackup_server. Так, например, для установки вместе с модулем PostgreSQL достаточно выполнить несколько команд в терминале (как показано в инструкии по установке):
Установите предварительно скачанные пакеты RuBackup, находясь в папке с пакетами и выполнив команду:
sudo apt install ./<namepackage>.deb
где
<namepackage>
— устанавливаемый пакет СРК RuBackup актуальной версии в приведённой последовательности:
rubackup-common;
rubackup-client;
rubackup-server;
rubackup-rest-api;
rubackup-postgresql.
После установки появляется файл настроек: /opt/rubackup/etc/rb_module_postgresql.conf. Именно здесь я настраивал подключение к базе данных и параметры для резервного копирования. Конфигурация гибкая — можно настроить как весь модуль, так и отдельные подмодули вроде pg_probackup
или superb
. Когда всё было готово, я просто перезапустил клиентский сервис, чтобы изменения вступили в силу. И всё — можно пользоваться новым модулем!
Если вы хотите углубиться в детали, загляните в официальную документацию: RuBackup Documentation. Всё расписано понятно и с примерами.
Возможности модуля PostgreSQL
Модуль PostgreSQL в RuBackup позволяет легко организовать резервное копирование баз данных. Можно настроить расписание для автоматического выполнения полного или инкрементального копирования, а для крупных проектов удобно использовать стратегии, чтобы управлять процессом сразу на нескольких серверах.
Дополнительно доступны полезные функции:
Шифрование копий.
Верификация целостности.
Перемещение копий между хранилищами.
Управление временем хранения резервных копий.
Особенно мне понравилась возможность задавать время жизни копий. Это удобно, чтобы не забивать память старыми данными — система сама удалит ненужное в заданный срок. А перемещение копий на другое место вообще спасение, когда локальное хранилище вот‑вот переполнится.
Как уже упоминалось, RuBackup предоставляет три основных подмодуля для выполнения резервного копирования PostgreSQL: PostgreSQL, pg_probackup и superb. Давайте рассмотрим каждый из них подробнее.
Подмодуль PostgresSql
По данному подмодулю у нас есть отличная подробная статья: Нативный подмодуль в PostgreSQL Universal. Полный и инкрементальные режимы. Я здесь все же вкратце расскажу про принцип работы. Итак, при создании резервной копии мы можем указать параметры для этой копии. Здесь incremental_subtype — выбор подтипа инкрементального резервного копирования — имеет несколько опций:
archive_wal — режим инкрементального резервного копирования, при котором модуль PostgreSQL Universal выполняет резервное копирование архивных WAL‑файлов;
page — копирование страниц данных, которые были изменены с момента последнего резервного копирования;
delta — копирование только изменившихся данных на уровне блоков;
ptrack — режим инкрементального копирования, при котором Модуль PostgreSQL Universal использует функционал отслеживания изменения страниц на лету. При каждом изменении страницы отношения она помечается в специальной карте PTRACK.
Все эти опции позволяют гибко подходить к процессу резервного копирования в зависимости от требований проекта. Так как же работает данный модуль? Он выполняет резервное копирование согласно введенным параметрам, а далее мы формируем методанные, пакуем их и отправляем вместе с данными на сервер. Сервер, в свою очередь, складывает резервную копию согласно выбранному хранилищу. Приведу пример типов таких хранилищ:
Файловая система — локальное файловое хранилище.
Ленточная библиотека — для тех, кто работает с лентами.
Облако — интеграция с облачными сервисами для хранения резервных копий.
Блочные устройства — дисковые массивы, которые обеспечивают доступ к данным на уровне блоков.
Хранилища, определяемые клиентом — кастомные варианты хранения (примером будет следующий тип подмодуля pg_probackup, где сама утилита будет решать, что делать с копиями).
Все хранилища объединяются в пулы, которые управляются медиасерверами, что позволяет гибко управлять резервным копированием и восстановлением данных. Общая структура выглядит примерно так:
Подмодуль pg_probackup
Подмодуль pg_probackup — это специализированный модуль для работы с БД Postgres Pro. Тут есть как минимум 2 ситуации, по которым вы захотите использовать PostgresPro.
Первая — если вы уже привыкли к утилите pg_probackup и хотите сохранить её использование, но интегрироваться в контекст системы RuBackup. Например, вас устраивает функционал и логика работы pg_probackup, но хочется добавить автоматизацию и удобный интерфейс RuBackup. Этот модуль позволяет бесшовно использовать утилиту pg_probackup через интерфейс RuBackup. Движок вызывает утилиту с параметрами, которые вы задаете, сохраняя привычную для вас логику работы.
Вторая — если вы пользуетесь корпоративной версией pg_probackup, где доступен ряд полезных функций. Это, например, инкрементальное копирование (page, ptrack, delta), контроль целостности данных, параллельное выполнение задач, сжатие резервных копий и возможность бэкапить напрямую в облако.
Интеграция с облачными S3-хранилищами здесь — ключевое преимущество. Мы не передаём данные больше на сервер. Не делаем никаких дополнительных накладных копирований. Данные минуют сервер RuBackup, попадают напрямую на облачное хранилище. Это ускоряет процесс, снижает количество промежуточных копий и даёт больше гибкости при восстановлении данных.
Однако есть и нюансы: для удаления копий необходимо наличие активного клиента, так как только клиент RuBackup знает, как взаимодействовать с копиями — будь то бэкап, восстановление или удаление. Также в случае подмодуля PostgreSQL на серверной части могут происходить некоторые дополнительные, предварительные, полезные действия, которые я описывал раннее, например, перемещения хранилищ и т. д. Ну и поскольку именно утилита контролирует действия с копиями, то пользователь должен указать тип хранилища — «хранилище, определяемые клиентом».
Чтобы начать работать с этим подмодулем, я просто выбираю pg_probackup в графе engine. Дальше выставляю параметры для данного движка, которые соответствуют входным аргументам утилиты pg_probackup. Здесь мне понравилось, что RuBackup выделяет ключевые параметры прямо в интерфейсе, так что их можно настроить «на лету». А если что‑то специфическое — для этого есть конфигурационный файл модуля /opt/rubackup/etc/rb_module_postgresql.conf.
Подмодуль Superb
Подмодуль Superb предназначен для резервного копирования PostgreSQL с использованием снапшотов (моментальных снимков файловой системы). Он позволяет выполнять как непрерывное резервное копирование, так и резервное копирование архивных WAL файлов, обеспечивая при этом высокую производительность и поддержку дедупликации.
Особенности подмодуля Superb:
Работа с LVM (Logical Volume Manager). PostgreSQL должна находиться на файловой системе, использующей том LVM. Если база данных не использует LVM, подмодуль Superb не подойдет — в этом случае вам стоит рассмотреть другие модули RuBackup для PostgreSQL.
Поддержка tablespaces. Модуль поддерживает дополнительные табличные пространства PostgreSQL, которые также должны быть на файловых системах с LVM.
Снапшоты LVM. Для работы требуется не менее 10% свободного пространства в LVM volume groups, где располагаются тома LVM, чтобы можно было создавать моментальные снимки.
Совместимость с XFS. Среди поддерживаемых файловых систем для базы данных — XFS.
Из адаптивных параметров при создании резервной копии в случае данного подмодуля вы можете указать:
snapshot_type — выбор типа снимка:
lvm — использование снапшотов LVM. Требование: PostgreSQL и tablespaces должны располагаться в файловой системе, использующей том LVM.
dattobd — использование модуля ядра dattobd для создания снимков блочных устройств.
tatlin — использование системы хранения данных Tatlin Unified Storage для создания мгновенных снимков данных PostgreSQL. Это позволяет эффективно управлять резервными копиями данных. Для работы с этим типом необходимо установить на хосте утилиты multipath и sg3_utils (если используется Tatlin Unified Storage).
snapshot_size — настройка размера снимка (в процентах от размера тома Logical Volume или блочного устройства) для резервного копирования. В случае с LVM, вы указываете процент от размера тома, а в случае использования dattobd — процент от устройства, на котором располагаются файлы базы данных.
Подмодуль Superb делает резервное копирование PostgreSQL максимально гибким и производительным, особенно для крупных инфраструктур, где важна скорость работы и поддержка снапшотов для данных на разных типах хранилищ.
Улучшения в будущих версиях модуля PostgreSQL
У RuBackup достаточно часто выходят новые обновления. По модулю также постоянно добавляется новая функциональность, в том числе ускоряется и улучшается работа уже существующей.
В следующих версиях мы хотим улучшить интерфейс и юзабилити модуля.
Планируется выпуск модуля MySQL.
Поддержка режимов PTRACK, PAGE, DELTA и работы со снэпшотами для PostgeSQL.
Добавиться Работа с Patroni без HA Proxy
Дополнительные ресурсы и ссылки
Подробная статья по подмодулю PostgreSQL — Нативный подмодуль в PostgreSQL Universal. Полный и инкрементальные режимы.
Testman2023
Инструкции надо читать(Captain Obvious)
https://docs.rubackup.ru/QuickstartGuide/2.4.0/install-packages.html
"...Установите предварительно скачанные пакеты RuBackup, находясь в папке с пакетами и выполнив команду:
sudo apt install ./namepackage.deb в приведённой последовательности..."
Не рекламирую!
https://www.rubackup.ru/go/
Срок действия бесплатной пробной версии - 1 год. Резервное копирование и восстановление c суммарным объемом резервных копий до 1ТБ.
RiMe22 Автор
Спасибо большое за обратную связь и за упоминание QuickstartGuide! Вы правы, этот гайд действительно более удобно описывает процесс установки. Я обновил статью, добавив информацию из него. Что касается срока действия бесплатной версии — да, это стандартная практика для многих систем, предоставляющих пробные версии. Тем не менее, даже в рамках таких ограничений, функционал достаточно широкий, чтобы оценить систему и её возможности. Ещё раз благодарю за полезный комментарий!