Команды backup, restore, merge, delete и validate могут выполняться в несколько параллельных потоков. Это может существенно ускорять работу pg_probackup3 при наличии достаточных ресурсов (ядер процессора, производительности дисковой подсистемы и сети).
Параллельным выполнением управляют ключи командной строки -j
/--threads
и --num-write-threads
. Эти параметры должны быть неотрицательными целыми числами.
Если параметр --threads
не указан или имеет нулевое значение, pg_probackup3 по умолчанию использует количество ядер процессора. Если определить количество ядер не удастся, будет использоваться один поток.
Если параметр --num-write-threads
не указан, количество потоков записи будет соответствовать количеству потоков чтения.
Если запрошенное количество потоков превышает системное ограничение (например, указанное в /proc/sys/kernel/threads-max
), будет выведено предупреждение и вместо запрошенного значения будет использовано системное ограничение. Если ограничение не обнаружено, будет применено значение, указанное пользователем.
В режиме PRO количество потоков чтения должно быть меньше значения серверного параметра max_wal_senders
.
Например, чтобы запустить резервное копирование в четыре параллельных потока, выполните:
pg_probackup3 backup -Bкаталог_копий
--instance=имя_экземпляра
-b FULL -j 4
Примечание
Восстановление происходит в параллельном режиме только на этапе копирования данных из каталога копий в каталог данных кластера. При запуске сервера Postgres Pro он должен будет воспроизвести записи из WAL, а это может происходить только последовательно.
Важно
Для выполнения pg_probackup3 в параллельных потоках реализован механизм, исключающий копирование одного файла несколько раз. Но при его использовании в системах с медленными дисками или слишком высокой нагрузкой копирование может завершиться ошибкой. Чтобы исключить такую ситуацию, устраните проблемы своей рабочей среды.