Postgres Pro Enterprise 13
Резервное копирование — 3
13
Авторские права
© Postgres Professional, 2023 год.
Авторы: Алексей Береснев, Илья Баштанов, Павел Толмачев
Использование материалов курса
Некоммерческое использование материалов курса (презентации,
демонстрации) разрешается без ограничений. Коммерческое
использование возможно только с письменного разрешения компании
Postgres Professional. Запрещается внесение изменений в материалы
курса.
Обратная связь
Отзывы, замечания и предложения направляйте по адресу:
Отказ от ответственности
Компания Postgres Professional не несет никакой ответственности за
любые повреждения и убытки, включая потерю дохода, нанесенные
прямым или непрямым, специальным или случайным использованием
материалов курса. Компания Postgres Professional не предоставляет
каких-либо гарантий на материалы курса. Материалы курса
предоставляются на основе принципа «как есть» и компания Postgres
Professional не обязана предоставлять сопровождение, поддержку,
обновления, расширения и изменения.
2
Темы
Хранилище S3
Политики хранения
Журнал сообщений
3
Хранилище S3
Поддержка S3
4
хранилище S3
Поддержка S3
Каталог копий можно размещать в объектном хранилище
с интерфейсом S3
MinIO
VK Cloud
каталог копий
HTTP[S]
Утилита pg_probackup способна работать с каталогом копий,
размещенным в объектном хранилище, предоставляющим интерфейс
S3 (Simple Storage Service).
В настоящее время поддерживаются два провайдера: MinIO и VK Cloud.
MinIO — программа с открытым кодом, реализующая совместимый с S3
API и важнейшие возможности, аналогичные Amazon Web Services.
В демонстрационных материалах курса используется MinIO.
При использовании каталога копий, размещенного в хранилище S3,
не будет работать команда merge. Также с командами backup и delete
нельзя использовать ключ --merge-expired.
6
Политики хранения
Удаление лишних копий
Закрепление копий
Политика хранения WAL
7
Удаление лишних копий
По умолчанию в каталоге хранятся все резервные копии
Политика хранения автоматически удаляет лишние копии
и ненужные сегменты WAL
количество хранимых копий
окно удержания в днях
новая копия
окно удержания
Экземпляру можно задать индивидуальную политику хранения
резервных копий, определяющую правила удаления устаревших копий
и ненужных сегментов WAL. Политика определяется количеством
полных копий, которые должны сохраняться в каталоге до
автоматического удаления устаревших копий, а также окном удержания.
Окно удержания определяет самый ранний момент времени, на
который pg_probackup может выполнить восстановление. Окно
удержания ограничивает количество дней сохранения избыточных
копий в каталоге.
Например, если окно удержания установлено в значение 7 дней, то
в каталоге должна сохраняться минимум одна копия старше 7 дней
с файлами WAL и цепочкой инкрементальных копий.
Политика хранения задается ключами:
--retention-redundancy — количество полных резервных копий,
которое должно сохраняться в каталоге;
--retention-window — количество дней от текущего момента до самого
раннего момента времени в прошлом, на который может быть
выполнено восстановление.
Ключи можно указать в командной строке pg_probackup для команд
backup или delete, или сохранить в конфигурации командой set-config.
Можно объединить самую старую инкрементальную копию,
удовлетворяющую требованиям политики хранения, с ее
родительскими копиями, срок хранения которых истек. Для этого
предназначен ключ --merge-expired.
8
Закрепление копий
На закрепленные копии не действует политика хранения
Параметры закрепления (команды backup и set-backup)
--ttl — время закрепления
--expire-time — срок хранения резервной копии
новая копия
окно удержания
Если нужно хранить копию дольше, чем задано политикой хранения,
можно закрепить ее на определенное время.
Закрепление можно задать при выполнении команды backup или
сохранить в конфигурации командой set-backup.
Ключ --ttl задает требуемое время жизни копии. Поддерживаются
следующие единицы измерения: ms (миллисекунды), s (секунды), min
(минуты), h (часы), d (дни). По умолчанию используются секунды.
Чтобы отменить закрепление, можно передать ноль в ключе --ttl.
Другой вариант — явно задать время истечения срока хранения копии,
воспользовавшись ключом --expire-time.
Определить, закреплена ли копия, можно с помощью команды show
утилиты pg_probackup. Закрепленная копия имеет атрибут expire-time,
содержащий время окончания срока ее хранения.
9
WAL
Политика хранения WAL
Политика хранения архива WAL ограничивает глубину
архива для экономии места в хранилище
Удаление устаревших копий с --delete-wal сопровождается
удалением лишних сегментов WAL
WAL
WAL
--wal-depth
сегменты
будут удалены
При работе в режиме непрерывного архивирования сегменты WAL
накапливаются в хранилище. Но его емкость ограничена.
Можно удалять устаревшие резервные копии с параметром --delete-wal,
при этом удаляются только те сегменты WAL, которые не относятся
ни к одной из резервных копий в каталоге. Если возможность
восстановления на момент времени нужна только для самых недавних
резервных копий, можно, настроив политику хранения архива WAL,
ограничить глубину архива и сэкономить занимаемое место. Конечно,
восстановиться из копии, оставшейся без архива WAL, можно только
если она является автономной (то есть содержит необходимые
журнальные файлы).
Пример политики: «восстановление на момент времени требуется лишь
для двух последних выполненных резервных копий».
Политику хранения архива WAL настраивают командой pg_probackup
set-config с параметром --wal-depth, задающим количество копий,
которые могут быть использованы для PITR. Установленная политика
действует для всех линий времени, поэтому можно выполнять PITR для
одинакового количества копий на каждой линии времени.
Закрепленные копии в этом числе не учитываются: если закрепляется
одна из последних копий, pg_probackup обеспечивает возможность
PITR для каждой дополнительной копии.
Также можно удалить сегменты, не удовлетворяющие заданной
политике хранения архива WAL, выполнив команду pg_probackup
delete или pg_probackup backup --delete-wal.
11
Журнал сообщений
Журнал отчета
Ротация журнала
12
Журнал отчета
По умолчанию pg_probackup выводит сообщения в stderr
Можно указать файл журнала для записи сообщений
отдельный журнал для сообщений об ошибках
Уровни важности сообщений настраиваются отдельно
для вывода на консоль и в файл журнала
В pg_probackup определены следующие уровни важности сообщений:
verbose, log, info, warning, error и off. Каждый уровень включает все
последующие, и с каждым следующим уровнем объем сообщений
уменьшается. При работе pg_probackup сообщения с уровнем важности
info и выше выводятся по умолчанию на консоль в стандартный поток
вывода ошибок stderr.
Настраивать уровень сообщений, выводимых в stderr, можно
посредством ключа --log-level-console.
Если требуется записывать сообщения в журнал, то следует задать имя
файла с помощью --log-filename. По умолчанию файл располагается
в подкаталоге log каталога резервных копий, ключом --log-directory
расположение можно переопределить.
Для файла журнала имеется отдельная настройка фильтрации
сообщений по уровню важности --log-level-file.
Вывод сообщений как на консоль, так и в журнал, можно вести
в обычном текстовом виде или же в формате JSON.
Настройкой --error-log-filename можно указать отдельные файлы для
сообщений об ошибках.
13
Журнал отчета
Ротация файлов журнала задается параметрами
по достижении заданного размера файла
ограничением времени записи в файл
Чтобы журналы сообщений не разрастались бесконтрольно, нужно
настроить ротацию. Она может происходить по достижении указанного
размера файла журнала, либо по достижении максимального времени
записи в файл.
15
Итоги
Каталог резервных копий может размещаться в облаке S3
Поддерживаются политики хранения копий и архива WAL
Политика хранения автоматически удаляет лишние
резервные копии и ненужные сегменты WAL
Утилита pg_probackup позволяет настроить ротацию
журналов сообщений
16
Практика
1. Подготовьте экземпляр к локальной работе.
2. Настройте вывод сообщений в журнал и политику для
хранения единственной полной копии.
3. Проверьте удаление лишних копий, пару раз выполнив
полное копирование.
1. Инициализируйте каталог с помощью pg_probackup init, а затем
добавьте в него экземпляр командой pg_probackup add-instance.
Зарегистрировав роль backup, создайте одноименную базу данных
и назначьте командой GRANT требуемые права.
2. Используйте команду pg_probackup set-config с ключами
--log-filename=probackup.log --log-level-file=info --log-level-console=
warning по аналогии с демонстрацией. В этой же команде укажите ключ
--retention-redundancy=1.
3. При выполнении полного резервного копирования используйте ключ
--stream. Вторая команда полного резервного копирования должна
сопровождаться ключом --delete-expired.