Запуск pg_probackup3 в параллельных потоках

Команды 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 в параллельных потоках реализован механизм, исключающий копирование одного файла несколько раз. Но при его использовании в системах с медленными дисками или слишком высокой нагрузкой копирование может завершиться ошибкой. Чтобы исключить такую ситуацию, устраните проблемы своей рабочей среды.