Инкрементальный бэкап в PostgreSQL 17

Ну вот оно!

Долгожданное обновление в PostgreSQL 17 теперь умеет штатно создавать инкрементные (инкрементальные) бэкапы!

Да, то что MS SQL умел нверное со времен когда «колесо» придумало человека )

Согласен! Лучше поздно, чем никогда.

Мы не будем сильно углубляться в теорию, как и в очевидные выгоды такого способа резервного копирования.

Понятно, что преимущество сделать копию только изменений вместо создания снова и снова ежедневно полной копии кластера будет очевидным.

Вы экономите место на диске скорость в десятки раз выше и тому подобное.

Наша задача в сегодняшней статье разобраться, как это по факту работает, как создать такой бэкап и восстановится из него.

 

Что ж тянуть не будем, приступаем к работе!

У нас есть тестовая база БП 3.0 и Ubuntu server 24.04, где уже установлен PostgreSQL 17 от Postgres Pro для 1С.

Документ Требование-накладная

Поставленная задача:

Создать полную резервную копию кластера (Где есть база БП 3.0 и восстановится на среду, используя инкременты)

На первом шаге нам надо включить WAL Summary в PostgreSQL 17

Postgres 17 поставляется с новым фоновым рабочим процессом, называемым процессом WAL summaryer , который создает «сводки» файлов WAL в каталоге pg_wal/summaries .

По умолчанию этот процесс не включен, но он необходим для работы инкрементального резервного копирования.

 

Включение WAL Summary в PostgreSQL

Для активации summarize_wal и перезагрузки конфигурации PostgreSQL выполняем:

Входим в psql под пользователем postgres

Включаем summarize_wal

Затем достаточно перезагрузить саму конфигурацию без перезагрузки PostgreSQL !

Перезагружаем конфигурацию PostgreSQL

ALTER SYSTEM SET summarize_wal = on

Создадим каталоги для хранения полного бэкапа и инкрементных бэкапов, что мы будем делать ежедневно ночью.

Создаём директории:

Устанавливаем правильные права для них:

Запускаем первое полное резервное копирование:

Выполняем его с помощью pg_basebackup:

Проверяем содержимое каталога с полным бэкапом:

sudo du -sh backups fullbackup

И посмотрим его размер:

Полный размер бэкапа 587 мб

Отлично!

Создаем инкрементальные бэкапы

Инкрементальные бэкапы мы делаем по ночам, всю рабочую неделю каждый день:

В понедельник:

Первый документ в понедельник

Затем также во вторник, среду, четверг, и пятницу (11,12,13,14,15 число)

Проверим размер инкрементальных бэкапов, что мы создали например в понедельник (Инкременты также включают кластер)

Инкрементный бэкап - Понедельник

Как видите в сравнении с полным бэкапом размер инкремента в десятки раз меньше, так как содержит только изменения, что произошли с момента создания последнего.

Рекомендую также создать скрипт для удаления старых бэкапов, чтоб не забивать диск, всегда перед первым полным бэкапом (Предварительно копируя его и инкременты в облако).

 

ВОССТАНОВЛЕНИЕ:

И так, чтоб восстановится из бэкапа если наступит такая необходимость мы должны снова собрать в один полный бэкап наши инкременты. (Присоединив их к первому полному) до того момента на который хотим восстановится, например если нас интересует среда делаем так:

Создаём директорию для объединённого бэкапа

Устанавливаем правильные права:

Объединяем полный и инкрементальные бэкапы (До среды включая):

Читать далее...

Зарегистрируйтесь, чтоб продолжить чтение статьи
Зарегистрироваться / Войти


Подробное видео о выше проделаной работе смотрите здесь >>>

Полный подробный курс по Администрированию PostgreSQL и 1С здесь >>>

Бот Один в группе https://t.me/odineski
Я — искусственный интеллект 1С, мой источник знаний включает 18 000 веб-страниц по 1С, а также книги, учебники и другие справочные материалы.
Я всегда готов помочь Вам решить любой вопрос по 1С и не только

Не нашли что искали?

Я — искусственный интеллект - бот "Одинэсник", пишите мне в: телеграм

Спросить бота

Оставьте ответ

База знаний 1С