ptrack. Инкрементальное резервное копирование#
Версия: 2.4.
В исходном дистрибутиве установлено по умолчанию: нет.
Связанные компоненты: отсутствуют.
ptrack реализует механизм инкрементального резервного копирования на уровне блоков для PostgreSQL. В СУБД Pangolin ptrack используется для создания инкрементных резервных копий с помощью менеджера резервного копирования и восстановления pg_probackup.
В Pangolin предусмотрено создание инкрементальной резервной копии в одном из двух режимов:
STREAM– включает все файлы, необходимые для восстановления кластера до состояния, соответствующего моменту создания резервной копии. Независимо от того, настроено ли непрерывное архивирование или нет, сегменты WAL, необходимые для последовательного восстановления, передаются по протоколу репликации во время резервного копирования и включаются в файлы резервной копии. Поэтому такие резервные копии называются автономными или самодостаточными;WAL ARCHIVE– полагается на непрерывное архивирование для обеспечения последовательного восстановления. Это режим доставки WAL по умолчанию.
Доработка#
Доработка не проводилась.
Ограничения#
Ограничения отсутствуют.
Установка#
Для включения расширения выполните шаги:
Добавьте
ptrackв список предзагружаемых библиотек, для этого в конфигурационном файле внесите имяptrackв параметрshared_preload_libraries:для конфигурации standalone в файле
vim $PGHOME/postgresql.conf;для конфигурации cluster в файле
vim /etc/pangolin-manager/postgres.yml.
shared_preload_libraries = 'ptrack'Перезапустите СУБД Pangolin:
systemctl restart postgresqlВключите расширение
ptrack:CREATE EXTENSION IF NOT EXISTS ptrack;В конфигурационном файле задайте параметр
ptrack.map_sizeравнымN/1024, гдеN— объем кластера СУБД Pangolin в мегабайтах, а так же установите параметрwal_levelна уровнеreplicaили выше:для конфигурации standalone в файле
vim $PGHOME/postgresql.conf;для конфигурации cluster в файле
vim /etc/pangolin-manager/postgres.yml.
ptrack.map_size = 'N/1024'
Использование модуля#
Создание инкрементальной резервной копии#
Включение функциональности для создания инкрементальной резервной копии требует пошаговой настройки:
Включения и настройки расширения -
ptrack.Включения
wal_levelна уровнеreplicaи выше.Однократного снятия полной резервной копии БД и хранения ее в хранилище резервных копий на всем протяжении жизни БД, так как последующие инкрементальные копии будут использовать полную резервную копию, как родительскую при восстановлении.
Выдачи прав на исполнение функции
ptrack_init_lsnпользователю с правами на создание резервных копий.
Внимание!
До создания полной резервной копии, расширение
ptrackуже должно работать, и после этого его нельзя отключать, так как это приведет к отсутствию некоторых блоков в резервной копии, что сделает резервную копию не консистентной.
Для того чтобы оперативно узнать подходят ли настройки СУБД для создания инкрементальной резервной копии, выполните следующие действия:
Проверьте, работает ли расширение
ptrack:SELECT * FROM pg_extension WHERE extname = 'ptrack';Проверьте, что конфигурационный параметр
ptrack.map_sizeзадан равным N/1024, где N — объем кластера СУБД Pangolin в мегабайтах:SHOW ptrack.map_size;Проверьте, что конфигурационный параметр
wal_levelзадан вreplicaили выше:SHOW wal_level;
Ниже приведено подробное описание каждого шага настройки параметров.
Схема процесса инкрементального резервного копирования#

Внимание!
Для инкрементального резервного копирования есть ограничения:
Необходимо сконфигурировать размер файла карты изменений с запасом на будущее. При расширении/урезании размера, карта изменений создается заново и все старые записи стираются.
Для создания инкрементальных резервных копий необходимо создать по крайне мере одну полную резервную копию при работающем расширении
ptrack.При использовании утилиты
pg_resetwalтекущая карта изменений стирается, после чего необходимо заново пройти шаги, описанные в процессе «Создание инкрементальной резервной копии», чтобы восстановить работуptrack.При использовании утилиты
pg_rewind(в том числе при операцияхfailover/switchover pangolin-manager) текущая карта изменений стирается, после чего необходимо заново пройти шаги, описанные в процессе «Создание инкрементальной резервной копии», чтобы восстановить работуptrack.
Проверка полной резервной копии на существование#
Перед поиском полной резервной копии необходимо выполнить поиск каталога резервных копий, для этого:
Пользователем ОС с правами
superuserвыполните поиск:sudo find / -name "pg_probackup.conf"В полученных файлах проверьте содержимое секции
pgdataкомандой:cat <полный путь до файла pg_probackup.conf> | grep pgdataЕсли в одном из каталогов с такими файлом секция
pgdataсовпадает с директорией данных БД, тогда каталог резервных копий есть, иначе его нет. Подробнее о создании полной резервной копии можно узнать в официальной документации pg_probackup.
В дальнейшем в качестве имени каталога резервных копий необходимо использовать имя каталога на три уровня выше каталога, в котором нашелся файл pg_probackup.conf. А в качестве имени экземпляра – имя каталога на один уровень выше каталога, в котором нашелся файл pg_probackup.conf.
Пример:
Файл нашелся в каталоге: /pgarclogs/06/backups/clustername/pg_probackup.conf.
Имя каталога резервных копий: /pgarclogs/06/.
Имя экземпляра: clustername.
Проверьте, создавалась ли полная резервная копия:
$PGHOME/bin/pg_probackup show -B <имя каталога резервных копий>
Наличие записей с Mode = FULL и Status = OK говорит о наличии полных резервных копий.
Предоставление пользователю с правами на репликацию права на создание инкрементальных копий#
Проверьте, имеет ли пользователь с правами на репликацию права на создание инкрементальной копии:
SELECT proname,proacl,pronamespace FROM pg_proc WHERE proname='ptrack_init_lsn';
Проверка настройки завершена успешно, если в выводе для каждой функции присутствует строка <имя пользователя бэкап>=X.
Для дальнейшего использования получите имя пространства имен, где находиться функция ptrack_init_lsn:
SELECT nspname FROM pg_namespace WHERE oid=<pronamespace>;
Вместо <pronamespace> необходимо подставить OID, полученный из столбца pronamespace из вывода функции выше.
Если пользователь с правами на репликацию не имеет прав на создание инкрементальной копии, предоставьте:
GRANT EXECUTE ON FUNCTION <nspname>.ptrack_init_lsn() TO <имя пользователя бэкап>;
Где <nspname>, значение пространства имен, полученное выше.
Создание инкрементальной резервной копии в режиме STREAM#
Пример команды для выполнения копии в режиме STREAM (выполняется пользователем ОС с правами на управление СУБД):
$PGHOME/bin/pg_probackup backup -B <имя папки резервных копий> --instance <имя экземпляра> --progress --stream -b PTRACK -U <имя пользователя бэкап> -d <имя БД> -h localhost -p <порт СУБД>
Примечание:
В случае ошибки из-за отсутствия родительской резервной копии необходимо выполнить создание полной резервной копии и повторить текущую операцию.
Создание инкрементальной резервной копии в режиме WAL ARCHIVE#
Перед выполнением команды для создания копии необходимо убедиться что правильно настроены параметры:
hot_standbyустановлен вon(только для ведомого сервера);full_page_writesустановлен вon(только для ведущего сервера);archive_modeустановлен вonилиalwaysдля ведущего сервера или standalone конфигурации, вalwaysдля ведомого.
Примечание:
Следующий параметр приведен для примера и приводит настройки для непрерывного архивирования WAL в локальный каталог:
archive_commandустановлен вpg_probackup archive-push -B <имя папки резервных копий> --instance <имя экземпляра> --wal-file-path=%p --wal-file-name=%f --compress --overwrite --batch-size=100.
Пример команды для выполнения копии в режиме WAL ARCHIVE (выполняется пользователем ОС с правами на управление СУБД):
$PGHOME/bin/pg_probackup backup -B <имя папки резервных копий> --instance <имя экземпляра> --progress -b PTRACK -U <имя пользователя бэкап> -d <имя БД> -h localhost -p <порт СУБД>
Отключение функциональности#
Для отключения функциональности:
Выполните команду:
DROP EXTENSION IF EXISTS 'ptrack';Удалите из конфигурационного файла (
postgresql.conf/postgres.yml) имяptrackиз параметраshared_preload_libraries.Удалите из конфигурационного файла параметр
ptrack.map_size.Перезапустите СУБД Pangolin.