Объединение дочерних резервных копий
Исполнять сценарий необходимо от имени пользователя postgres.
Описание сценария
Для сокращения количества дублей резервных копий и экономии места на диске Platform V CopyWala позволяет выполнять объединение дочерних резервных копий. Для выполнения объединения все необходимые резервные копии выстраиваются в цепочку: основная резервная копия + дочерние резервные копии (дельта от основной).
Объединение дочерних резервных копий работает только для следующих хранилищ: Local FS, S2.
Platform V CopyWala не поддерживает операцию объединения нескольких зашифрованных копий одной и той же базы данных, созданных с использованием Transparent Data Encryption (TDE), а также копий, размещенных в хранилищах DDBoost и S3.
Последовательность выполнения
Настройка механизма для Local FS
Чтобы выполнить объединение дочерних резервных копий, в конфигурационном файле copywala.yaml настройте описанные ниже параметры.
Параметры производительности
write_parts_workers_no: Количество одновременно работающих процессов для записи частей резервных копий. Устанавливается равным половине числа ядер CPU, но минимум один поток.read_parts_workers_no: Аналогично предыдущему параметру, количество параллельно читающих потоков также равно половине количества ядер CPU, но не менее одного потока.
Эти параметры позволяют использовать многопроцессорную обработку для ускорения чтения и записи данных во время операции восстановления.
Настройки безопасности и контроля качества
verify_page_checksums: Включение проверки контрольных сумм страниц PostgreSQL. Отключение параметра ускоряет восстановление, но снижает безопасность, поскольку не гарантирует отсутствие повреждений данных на уровне страниц.max_allowed_page_verification_failures: Максимальное число допустимых ошибок при проверке контрольных сумм страниц. Здесь установлено значение0, значит любая ошибка приведет к остановке процесса восстановления.verify_archive_checksums: Включение проверки контрольных сумм всего архива резервной копии. Это обеспечивает дополнительную защиту от повреждения данных на уровне целых архивов.
Режимы ввода-вывода
read_direct_io,write_direct_io: Прямой ввод-вывод отключен. Данные будут проходить через буферизацию операционной системы, что повышает производительность на большинстве современных дисков, особенно SSD.
Описание конфигурации по умолчанию
Конфигурация настроена на баланс между производительностью и надежностью:
- Используется многопоточность для повышения скорости чтения-записи.
- Проверяются контрольные суммы архивов целиком, но проверка контрольных сумм отдельных страниц выключена ради увеличения скорости восстановления.
- Не используются режимы прямого ввода-вывода, что подходит для большинства современных хранилищ данных.
merge_policy:
write_parts_workers_no: max(runtime.NumCPU()/2, 1)
read_parts_workers_no: max(runtime.NumCPU()/2, 1)
verify_page_checksums: false
max_allowed_page_verification_failures: 0
verify_archive_checksums: true
read_direct_io: false
write_direct_io: false
Настройка механизма для S2
Чтобы выполнить объединение дочерних резервных копий, в конфигурационном файле storage-service.yaml настройте описанные ниже параметры.
Рабочие директории и права доступа
- work_dir: /var/pbr/storage-service — рабочий каталог приложения, где оно будет хранить временные файлы, журналы и другие данные.
- work_dir_mode: 0700 — права доступа к рабочему каталогу. В восьмеричной системе счисления значение 0700 означает, что доступ к этому каталогу имеет только владелец файла (полный доступ: чтение, запись и выполнение).
Параметры производительности
write_parts_workers_no: Количество одновременно работающих процессов для записи частей резервных копий. Устанавливается равным половине числа ядер CPU, но минимум один поток.read_parts_workers_no: Аналогично предыдущему параметру, количество параллельно читающих потоков также равно половине количества ядер CPU, но не менее одного потока.
Режимы ввода-вывода
read_direct_io,write_direct_io: Прямой ввод-вывод отключен. Данные будут проходить через буферизацию операционной системы, что повышает производительность на большинстве современных дисков, особенно SSD.
Описание конфигурации по умолчанию
Данная конфигурация предназначена для повышения производительности операций ввода-вывода большого объема данных через использование многопоточности и стандартных механизмов буферизации операционной системы. Она подходит для приложений, работающих с большими файлами и нуждающихся в высокой пропускной способности хранилища.
app:
work_dir: /var/pbr/storage-service
work_dir_mode: 0700
merge_policy:
write_parts_workers_no: max(runtime.NumCPU()/2, 1)
read_parts_workers_no: max(runtime.NumCPU()/2, 1)
write_direct_io: false
read_direct_io: false
Эта политика хорошо подойдет для быстрого восстановления крупных объемов данных, когда скорость важнее дополнительной защиты на уровне отдельных страниц.
Запуск объединения дочерних резервных копий
Выполните команду copywala merge <archive-uri> --delete-merged --dry-run.
Команда copywala merge предназначена для объединения нескольких архивов резервных копий в единый архив.
Рассмотрим подробнее каждый параметр команды:
<archive-uri>— путь до исходного архива резервной копии, который будет объединяться с цепочкой дочерних копий.--delete-merged— после успешного завершения слияния удаляет исходные архивы, участвовавшие в процессе объединения.--dry-run— запускает команду в режиме тестирования («сухого прогона»). В таком режиме никакие изменения не применяются, а лишь выводится информация о том, какие действия были бы выполнены командой, если бы она выполнялась без флага--dry-run. То есть фактически ничего не изменится, никаких файлы не сотрутся и не сольются.
Таким образом, команда проверит возможность выполнения процедуры объединения архивов и покажет результат, но сама операция слияния и удаления исходников выполнена не будет.
Результат
После завершения объединения в таблице резервных копий соответствующие копии помечаются MERGED (в статусе инвентаризации), а если был указан флаг --delete-merged, копии помечаются DELETED (в статусе инвентаризации) и удаляются из хранилища.
В Retention policy, если резервные копии не были удалены, объединенные копии также участвуют в алгоритме. То есть если было выполнено объединение от последней цепочки, а потом указан max-full-backups=2 в retention policy, то останется новый объединенный архив и вся цепь объединения. Остальные файлы будут удалены.
Если одна из резервных копий была закреплена, но был указан флаг --delete-merged, закрепление игнорируется.