3.5. Запуск pg_probackup3 в параллельных потоках (многопоточность) #
Команды backup, restore, merge, delete, catchup, archive-push, archive-get и validate могут выполняться в несколько параллельных потоков. Это может существенно ускорять работу pg_probackup3 при наличии достаточных ресурсов (ядер процессора, производительности дисковой подсистемы и сети).
Параллельным выполнением управляют ключи командной строки -j/--threads, --num-write-threads и --num-validate-threads. Эти параметры должны быть неотрицательными целыми числами.
Примечание
Команда restore пока не поддерживает эти параметры. Число потоков равняется числу сегментов резервной копии.
Восстановление происходит в параллельном режиме только на этапе копирования данных из каталога копий в каталог данных кластера. При запуске сервера Postgres Pro он должен будет воспроизвести записи из WAL, а это может происходить только последовательно.
Если эти параметры не указаны или имеют нулевое значение, pg_probackup3 по умолчанию использует количество ядер процессора. Если определить количество ядер не удастся, будет использоваться один поток.
Когда параметры --num-write-threads и --num-validate-threads указаны, они переопределяют значение -j.
Если запрошенное количество потоков превышает системное ограничение (например, указанное в /proc/sys/kernel/threads-max), будет выведено предупреждение и вместо запрошенного значения будет использовано системное ограничение. Если ограничение не обнаружено, будет применено значение, указанное пользователем.
Ограничение количества потоков также можно задать с помощью переменной окружения PG_PROBACKUP_MAX_THREADS. Если параметр -j не указан, но задана переменная окружения PG_PROBACKUP_MAX_THREADS, количество потоков определяется автоматически исходя из количества доступных ядер процессора, но не может превышать значение PG_PROBACKUP_MAX_THREADS.
В режиме PRO количество потоков чтения должно быть меньше значения серверного параметра max_wal_senders.
Например, чтобы запустить резервное копирование в четыре параллельных потока, выполните:
pg_probackup3 backup -Bкаталог_копий--instance=имя_экземпляра-b FULL -j 4
Команда archive-push вызывается Postgres Pro как часть параметра archive_command, а archive-get — как часть restore_command. Хотя каждая из команд вызывается для одного файла WAL, один процесс pg_probackup3 может параллельно обрабатывать несколько файлов WAL (сканируя каталог pg_wal в случае archive-push и копируя из каталога резервных копий в случае archive-get), используя указанное количество потоков. Также можно указать параметр --batch-size для обработки сегментов WAL пакетами заданного размера. За дополнительной информацией обратитесь к описанию команд archive-push и archive-get.