20 Занятие 20: Резервное копирование / Другие возможности pg_probackup
Эта страница извлечена из официального PDF в нативный Markdown. Текст слайдов, код и комментарии сохранены в порядке чтения; исходные PDF и HTML остаются эталоном макета. HTML source: pgpro_20_probackup_3.html Archive: PGPRO-handouts-16.zip Страниц PDF: 21
Page 1: Резервное копирование / Другие возможности pg_probackup
Авторские права
© Postgres Professional, 2023–2026 Авторы: Алексей Береснев, Илья Баштанов, Павел Толмачев, Игорь Гнатюк Фото: Олег Бартунов (монастырь Пху и пик Бхрикути, Непал)
Использование материалов курса
Некоммерческое использование материалов курса (презентации, демонстрации) разрешается без ограничений. Коммерческое использование возможно только с письменного разрешения компании Postgres Professional. Запрещается внесение изменений в материалы курса.
Обратная связь
Отзывы, замечания и предложения направляйте по адресу: edu@postgrespro.ru
Отказ от ответственности
Компания Postgres Professional не несет никакой ответственности за любые повреждения и убытки, включая потерю дохода, нанесенные прямым или непрямым, специальным или случайным использованием материалов курса. Компания Postgres Professional не предоставляет каких-либо гарантий на материалы курса. Материалы курса предоставляются на основе принципа «как есть» и компания Postgres Professional не обязана предоставлять сопровождение, поддержку, обновления, расширения и изменения.
Page 2: Темы
- Хранилище S3
- Политики хранения
- Журнал
Page 3: Хранилище S3
{#source-figure-003 caption=“Source slide page 3: Хранилище S3”}
Каталог копий можно размещать в хранилище S3
- MinIO
- Amazon S3
- VK Cloud
Комментарии преподавателя
Утилита pg_probackup способна работать с каталогом копий, который размещен в объектном хранилище, предоставляющем интерфейс S3 (Simple Storage Service).
В настоящее время поддерживаются: MinIO, Amazon S3 и VK Cloud. MinIO — программа с открытым кодом, реализующая API, совместимый с S3, и важнейшие возможности, аналогичные Amazon Web Services. В демонстрационных материалах курса используется именно MinIO.
https://postgrespro.ru/docs/enterprise/16/app-pgprobackup#PBK-SETUP-S3
Page 4: Хранилище S3
В виртуальной машине установлено и настроено программное обеспечение MinIO, реализующее API S3. Запустим сервис MinIO.
Объектное хранилище MinIO использует корзины — аналоги каталогов в обычных файловых системах. Создадим корзину bkp:
С помощью текстового редактора создадим файл, описывающий подключение к хранилищу S3:
access_key и secret-key задают имя учетной записи и пароль в хранилище; s3-host и s3-port — узел и порт службы S3; s3-bucket — имя корзины S3; s3-secure — использование протокола https. Создадим базу данных, к которой будет подключаться роль backup.
Инициализируем каталог копий в хранилище S3: провайдер указывается в параметре –s3; расположение файла с настройками — в параметре –s3-config-file.
Если параметр –s3-config-file опущен, pg_probackup ищет настройки подключения к S3 сначала в /etc/pg_probackup/s3.config, а затем в ~postgres/.pg_probackup/s3.config. Также параметры подключения к S3 можно задать с помощью переменных окружения. Добавим в локальный каталог копий экземпляр БД, работающий на удаленном сервере. Каталог копий будет создан в хранилище S3.
Чтобы сократить командную строку, сохраним параметры удаленного доступа в конфигурации.
Page 5: Page 5
Обратите внимание, что параметры –s3=minio и –s3-config-file=/home/student/s3.config задают подключение к S3, они в конфигурацию не записываются и должны задаваться в командной строке явно. Выполним полное резервное копирование в облако.
В каталоге теперь имеется полная потоковая копия:
Page 6: Политики хранения
Удаление лишних копий
- Закрепление копий
- Политика хранения WAL
Page 7: Удаление лишних копий
{#source-figure-007 caption=“Source slide page 7: Удаление лишних копий”}
По умолчанию в каталоге хранятся все резервные копии
- Политика хранения определяет правила удаления копий
- количество хранимых копий
- окно удержания в днях
Комментарии преподавателя
Экземпляру можно задать индивидуальную политику хранения резервных копий, определяющую, какие резервные копии следует считать устаревшими и ненужными. Политика определяется количеством полных копий, которые должны сохраняться в каталоге, а также окном удержания, которое определяет самый ранний момент времени, на который pg_probackup должен обеспечить восстановление. Окно удержания ограничивает количество дней сохранения избыточных копий в каталоге.
Например, если окно удержания установлено в значение 7 дней, то в каталоге должна сохраняться минимум одна копия старше 7 дней с файлами WAL и цепочкой инкрементальных копий.
Политика хранения задается параметрами:
● –retention-redundancy — количество полных резервных копий, которое должно сохраняться в каталоге;
● –retention-window — количество дней от текущего момента до самого раннего момента времени в прошлом, на который может быть выполнено восстановление.
Параметры можно указать в командной строке pg_probackup для команд backup или delete, или сохранить в конфигурации командой set-config.
https://postgrespro.ru/docs/enterprise/16/app-pgprobackup#PBK-RETENTI ON-POLICY
Page 8: Закрепление копий
{#source-figure-008 caption=“Source slide page 8: Закрепление копий”}
На закрепленные копии политика хранения не действует
- Параметры закрепления (команды backup и set-backup)
- -ttl — время закрепления
- -expire-time — срок хранения резервной копии
Комментарии преподавателя
Если нужно хранить копию дольше, чем задано политикой хранения, можно закрепить ее на определенное время.
Закрепление можно задать при выполнении команды backup или сохранить в конфигурации командой set-backup.
Параметр –ttl задает требуемое время жизни копии, по умолчанию предполагаются секунды. Значение ноль отменяет закрепление.
Другой вариант — явно задать время истечения срока хранения копии, воспользовавшись параметром –expire-time.
Определить, закреплена ли копия, можно с помощью команды show утилиты pg_probackup. Закрепленная копия имеет атрибут expire-time, содержащий время окончания срока ее хранения.
https://postgrespro.ru/docs/enterprise/16/app-pgprobackup#PBK-BACKUP-PINNING
Page 9: Политика хранения WAL
{#source-figure-009 caption=“Source slide page 9: Политика хранения WAL”}
Политика хранения архива WAL ограничивает глубину архива для экономии места в хранилище
- Удаление устаревших копий с –delete-wal сопровождается удалением лишних сегментов WAL
Комментарии преподавателя
При работе в режиме непрерывного архивирования сегменты WAL накапливаются в хранилище. Но его емкость ограничена.
Можно удалять устаревшие резервные копии с параметром –delete-wal. При этом удаляются только те сегменты WAL, которые не относятся ни к одной из резервных копий в каталоге. Если возможность восстановления на момент времени нужна только для самых недавних резервных копий, можно, настроив политику хранения архива WAL, ограничить число таких копий — глубину архива — и сэкономить занимаемое место. Из копии, оставшейся без архива WAL, можно восстановиться, только если она является автономной (то есть содержит необходимые журнальные файлы).
Политику хранения архива WAL настраивают параметром –wal-depth. Установленная политика действует для всех линий времени, поэтому можно выполнять PITR для одинакового количества копий на каждой линии времени. Закрепленные копии в этом числе не учитываются.
Можно вручную удалить сегменты, не удовлетворяющие заданной политике хранения архива WAL, выполнив команду pg_probackup delete или pg_probackup backup –delete-wal.
https://postgrespro.ru/docs/enterprise/16/app-pgprobackup#PBK-WAL-ARC HIVE-RETENTION-POLICY
Page 10: Политики хранения копий
Выполним еще одно полное резервное копирование.
Кроме последней, актуальной копии, в каталоге есть первая, ранее созданная.
Если принята политика хранить единственную полную резервную копию, то первая созданная копия устарела. Количество хранящихся избыточных копий можно задать непосредственно в командной строке. Выполним удаление, указав, что должна храниться только одна копия.
Проверим состояние каталога резервных копий:
Осталась единственная полная резервная копия. Зафиксируем политику удержания единственной полной копии в конфигурации.
Сделаем полную копию со сжатием. Укажем, что должны быть удалены устаревшие в соответствии с политикой хранения копии и сегменты WAL.
Page 11: Page 11
Теперь в каталоге осталась последняя полная резервная копия.
Page 12: Журнал
Журнал сообщений
- Ротация журнала
Page 13: Журнал сообщений
По умолчанию 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).
https://postgrespro.ru/docs/enterprise/16/app-pgprobackup#PBK-LOGGING-OPTS
Page 14: Настройка журнала сообщений
Настроим параметры для журнала сообщений: –log-level-file — уровень сообщений, которые будут выводиться в файл журнала; –log-level-console — уровень сообщений, которые будут выводиться на консоль; –log-filename — имя файла журнала (по умолчанию в подкаталоге log, расположение можно изменить с помощью – log-directory); –log-rotation-size — размер файла, при превышении которого выполняется ротация. Нам потребуется каталог для хранения файлов журналов:
Выполним резервное копирование с только что заданными настройками журнала сообщений.
Заглянем в каталог с журналом:
Еще раз выполним резервное копирование, включив подробный вывод сообщений в журнал.
В журнал записалось большое количество сообщений.
Повторим эксперимент с уровнем важности сообщений по умолчанию. Файл журнала сообщений достиг размера, при котором должна произойти ротация:
Page 15: Page 15
В результате ротации журнала старые сообщения были стерты и размер файла уменьшился.
Корзина bkp нам больше не понадобится, удалим ее:
Page 16: Итоги
Каталог резервных копий может размещаться в облаке S3
- Поддерживаются политики хранения, определяющие правила удаления резервных копий и сегментов WAL
- Можно настроить журналирование сообщений и ротацию
Page 17: Практика
- Инициализируйте каталог резервных копий и добавьте в него экземпляр, подготовив его для локальной работы. 2. Настройте вывод сообщений в журнал и политику хранения единственной полной копии. 3. Проверьте удаление лишних копий, несколько раз выполнив полное копирование. Найдите в журнале сообщений соответствующие строки.
Комментарии преподавателя
Инициализируйте каталог с помощью pg_probackup init, а затем добавьте в него экземпляр командой pg_probackup add-instance. Зарегистрировав роль backup, создайте базу данных для подключения из шаблона templateprobackup.
При выполнении полного резервного копирования используйте параметр –stream.
Page 18: 1. Подготовка каталога резервных копий
Подготовим каталог в файловой системе.
Инициализируем каталог копий.
Зарегистрируем экземпляр.
Создадим базу данных для подключения.
2. Настройка журнала сообщений
Установим политику хранения единственной полной копии и вывод сообщений в журнал.
3. Полная копия
Сформируем полную копию:
Проверим каталог копий.
Еще одна полная копия.
Page 19: Page 19
Проверим каталог копий — предыдущая копия удалена:
Выведем последние строки журнала сообщений:
Уборка
Удалим созданную базу данных и каталог копий.
Page 20: Практика PPEM
- Создайте S3-хранилище резервных копий для экземпляра ent-16 и назовите его ent-16_minio, а каталог копий — /backup_s3. Определите политику хранения только одной полной копии с удалением просроченных. 2. Сделайте автономную резервную копию основного экземпляра ent-16 в созданное хранилище. 3. В базе данных student основного экземпляра создайте новую таблицу в схеме public с одним целочисленным столбцом (первичным ключом). 4. Сделайте разностную резервную копию основного экземпляра в S3-хранилище. 5. Убедитесь, что установленная в п. 1 политика хранения действует.
Комментарии преподавателя
- Используйте ПО MinIO, установленное в виртуальной машине курса. Для доступа к хранилищу нужно запустить соответствующую службу: sudo systemctl start minio
Настройки доступа к хранилищу возьмите из демонстрации.
В параметрах хранения укажите число полных копий — 1, просроченные копии — удалять.
- При отсутствии архивации WAL нужно оставить включенным параметр «создать автономную копию».
Page 21: 1. Создание S3-хранилища копий
В навигационной панели выберите вкладку «Резервное копирование», в ней — «Хранилища РК» и нажмите «Добавить хранилище». Выберите тип «S3 хранилище», заполните поля открывшейся формы, уделив особое внимание разделу «Параметры хранения» и нажмите «Добавить».
2. Автономная резервная копия
Выберите вкладку «Резервные копии» и нажмите кнопку «Создать резервную копию». Далее в последовательно открывающихся формах заполните необходимые поля и нажмите «Выполнить РК».
3. Изменения в данных экземпляра (создание таблицы)
Во вкладке «Базы данных» выберите базу student, а в ней схему public. Нажмите «Создать таблицу», заполните поля формы и нажмите «Сохранить».
4. Разностная резервная копия
Из вкладки «Резервные копии» выполните создание разностной копии, выбрав режим копирования delta.
5. Действие политики хранения
Выполните еще одно полное резервное копирование экземпляра и проверьте список резервных копий.