Резервное копирование
Другие возможности pg_probackup
16
Авторские права
© Postgres Professional, 2023–2026
Авторы: Алексей Береснев, Илья Баштанов, Павел Толмачев, Игорь
Гнатюк
Фото: Олег Бартунов (монастырь Пху и пик Бхрикути, Непал)
Использование материалов курса
Некоммерческое использование материалов курса (презентации,
демонстрации) разрешается без ограничений. Коммерческое
использование возможно только с письменного разрешения компании
Postgres Professional. Запрещается внесение изменений в материалы
курса.
Обратная связь
Отзывы, замечания и предложения направляйте по адресу:
edu@postgrespro.ru
Отказ от ответственности
Компания Postgres Professional не несет никакой ответственности за
любые повреждения и убытки, включая потерю дохода, нанесенные
прямым или непрямым, специальным или случайным использованием
материалов курса. Компания Postgres Professional не предоставляет
каких-либо гарантий на материалы курса. Материалы курса
предоставляются на основе принципа «как есть» и компания Postgres
Professional не обязана предоставлять сопровождение, поддержку,
обновления, расширения и изменения.
2
Темы
Хранилище S3
Политики хранения
Журнал
3
Хранилище S3
Каталог копий можно размещать в хранилище S3
MinIO
Amazon S3
VK Cloud
HTTP[S]
хранилище S3
каталог копий
Утилита pg_probackup способна работать с каталогом копий, который
размещен в объектном хранилище, предоставляющем интерфейс S3
(Simple Storage Service).
В настоящее время поддерживаются: MinIO, Amazon S3 и VK Cloud.
MinIO — программа с открытым кодом, реализующая API, совместимый
с S3, и важнейшие возможности, аналогичные Amazon Web Services.
В демонстрационных материалах курса используется именно MinIO.
5
Политики хранения
Удаление лишних копий
Закрепление копий
Политика хранения WAL
6
Удаление лишних копий
По умолчанию в каталоге хранятся все резервные копии
Политика хранения определяет правила удаления копий
количество хранимых копий
окно удержания в днях
новая копия
окно удержания
Экземпляру можно задать индивидуальную политику хранения
резервных копий, определяющую, какие резервные копии следует
считать устаревшими и ненужными. Политика определяется
количеством полных копий, которые должны сохраняться в каталоге,
а также окном удержания, которое определяет самый ранний момент
времени, на который pg_probackup должен обеспечить восстановление.
Окно удержания ограничивает количество дней сохранения избыточных
копий в каталоге.
Например, если окно удержания установлено в значение 7 дней, то
в каталоге должна сохраняться минимум одна копия старше 7 дней
с файлами WAL и цепочкой инкрементальных копий.
Политика хранения задается параметрами:
●
--retention-redundancy — количество полных резервных копий,
которое должно сохраняться в каталоге;
●
--retention-window — количество дней от текущего момента до самого
раннего момента времени в прошлом, на который может быть
выполнено восстановление.
Параметры можно указать в командной строке pg_probackup для
команд backup или delete, или сохранить в конфигурации командой set-
config.
7
Закрепление копий
На закрепленные копии политика хранения не действует
Параметры закрепления (команды backup и set-backup)
--ttl — время закрепления
--expire-time — срок хранения резервной копии
новая копия
окно удержания
Если нужно хранить копию дольше, чем задано политикой хранения,
можно закрепить ее на определенное время.
Закрепление можно задать при выполнении команды backup или
сохранить в конфигурации командой set-backup.
Параметр --ttl задает требуемое время жизни копии, по умолчанию
предполагаются секунды. Значение ноль отменяет закрепление.
Другой вариант — явно задать время истечения срока хранения копии,
воспользовавшись параметром --expire-time.
Определить, закреплена ли копия, можно с помощью команды show
утилиты pg_probackup. Закрепленная копия имеет атрибут expire-time,
содержащий время окончания срока ее хранения.
8
WAL
Политика хранения WAL
Политика хранения архива WAL ограничивает глубину
архива для экономии места в хранилище
Удаление устаревших копий с --delete-wal сопровождается
удалением лишних сегментов WAL
WAL
WAL
--wal-depth
сегменты
будут удалены
При работе в режиме непрерывного архивирования сегменты WAL
накапливаются в хранилище. Но его емкость ограничена.
Можно удалять устаревшие резервные копии с параметром --delete-wal.
При этом удаляются только те сегменты WAL, которые не относятся
ни к одной из резервных копий в каталоге. Если возможность
восстановления на момент времени нужна только для самых недавних
резервных копий, можно, настроив политику хранения архива WAL,
ограничить число таких копий — глубину архива — и сэкономить
занимаемое место. Из копии, оставшейся без архива WAL, можно
восстановиться, только если она является автономной (то есть
содержит необходимые журнальные файлы).
Политику хранения архива WAL настраивают параметром --wal-depth.
Установленная политика действует для всех линий времени, поэтому
можно выполнять PITR для одинакового количества копий на каждой
линии времени. Закрепленные копии в этом числе не учитываются.
Можно вручную удалить сегменты, не удовлетворяющие заданной
политике хранения архива WAL, выполнив команду pg_probackup
delete или pg_probackup backup --delete-wal.
10
Журнал
Журнал сообщений
Ротация журнала
11
Журнал сообщений
По умолчанию pg_probackup выводит сообщения в stderr
Можно указать файл журнала для записи сообщений
отдельный журнал для сообщений об ошибках
Уровни важности сообщений настраиваются отдельно
для вывода на консоль и в файл журнала
Ротация файлов журнала
по достижении заданного размера файла
ограничением времени записи в файл
В pg_probackup определены следующие уровни важности сообщений:
verbose, log, info, warning, error и off. Каждый уровень включает все
последующие, и с каждым следующим уровнем объем сообщений
уменьшается. При работе pg_probackup сообщения с уровнем важности
info и выше выводятся по умолчанию на консоль в стандартный поток
вывода ошибок stderr.
Уровень сообщений настраивается отдельно для консоли (--log-level-
console) и для файла журнала (--log-level-file).
Для записи сообщений в журнал следует задать имя файла с помощью
параметра --log-filename. По умолчанию файл располагается
в подкаталоге log каталога резервных копий, параметром --log-directory
расположение можно переопределить.
Сообщения как на консоль, так и в журнал, можно выводить в обычном
текстовом виде или в формате JSON.
Настройкой --error-log-filename можно указать шаблон имен файлов для
сообщений об ошибках.
Чтобы журналы сообщений не разрастались бесконтрольно, нужно
настроить ротацию. Она может происходить по достижении указанного
размера файла журнала (--log-rotation-size), либо по достижении
максимального времени записи в файл (--log-rotation-age).
13
Итоги
Каталог резервных копий может размещаться в облаке S3
Поддерживаются политики хранения, определяющие
правила удаления резервных копий и сегментов WAL
Можно настроить журналирование сообщений и ротацию
14
Практика
1. Инициализируйте каталог резервных копий и добавьте в него
экземпляр, подготовив его для локальной работы.
2. Настройте вывод сообщений в журнал и политику хранения
единственной полной копии.
3. Проверьте удаление лишних копий, несколько раз выполнив
полное копирование. Найдите в журнале сообщений
соответствующие строки.
1. Инициализируйте каталог с помощью pg_probackup init, а затем
добавьте в него экземпляр командой pg_probackup add-instance.
Зарегистрировав роль backup, создайте базу данных для подключения
из шаблона templateprobackup.
3. При выполнении полного резервного копирования используйте
параметр --stream.
15
Практика PPEM
1. Создайте S3-хранилище резервных копий для экземпляра
ent-16 и назовите его ent-16_minio, а каталог копий —
/backup_s3. Определите политику хранения только одной
полной копии с удалением просроченных.
2. Сделайте автономную резервную копию основного
экземпляра ent-16 в созданное хранилище.
3. В базе данных student основного экземпляра создайте новую
таблицу в схеме public с одним целочисленным столбцом
(первичным ключом).
4. Сделайте разностную резервную копию основного
экземпляра в S3-хранилище.
5. Убедитесь, что установленная в п. 1 политика хранения
действует.
1. Используйте ПО MinIO, установленное в виртуальной машине курса.
Для доступа к хранилищу нужно запустить соответствующую службу:
sudo systemctl start minio
Настройки доступа к хранилищу возьмите из демонстрации.
В параметрах хранения укажите число полных копий — 1,
просроченные копии — удалять.
4. При отсутствии архивации WAL нужно оставить включенным
параметр «создать автономную копию».