pgpro_tune
pgpro_tune — утилита командной строки для автоматической настройки
Синтаксис
pgpro_tune [параметр...] [ -D | --pgdata ]каталогимя_пресета
Описание #
pgpro_tune — это утилита командной строки для автоматической настройки. Оптимальные значения различных параметров конфигурации Postgres Pro зависят от оборудования. Утилита pgpro_tune собирает информацию о системе и преобразует её в набор параметров, записываемых в файл конфигурации.
Использование #
Использование pgpro_tune включено в initdb по умолчанию. Для этой утилиты предусмотрено два параметра initdb: --no-tune отключает её использование, --tune=OPTIONS позволяет передавать дополнительные параметры для запуска pgpro_tune.
Сначала pgpro_tune запускает стандартный пресет. Дополнительные пресеты могут быть заданы с помощью параметра -P или --preset=NAME, или путём указания имени пресета в качестве последнего аргумента командной строки. Чтобы отключить стандартный пресет, используйте параметр --no-default.
В данный момент доступны следующие пресеты по умолчанию:
- default.tune: Основной на данный момент пресет, который обеспечивает различные конфигурации в зависимости от редакции и версии сервера.
- regress.tune: Этот пресет применяется для отладки. Он отменяет изменения, произведённые конфигурационными параметрами пресета- default.tune. Таким образом обеспечивается успешное выполнение регрессионных тестов, результаты которых могут различаться из-за аппаратно-зависимых настроек.
- 1c.tune: Этот пресет содержит параметры, специфичные для 1С, некоторые из которых требуют установки дополнительных модулей (таких как online_analyze и plantuner). Подробную информацию о настройках Postgres Pro для решений 1С можно найти в Приложении K.
- extensions.tune: Этот пресет содержит дополнительные параметры для расширений. Эти параметры требуют установки других модулей (таких как pg_stat_statements).
Дополнительные параметры можно указать с помощью -O или --options=OPTIONS для любого пресета, но для пресета по умолчанию следует использовать --default-options=OPTIONS.
Дополнительные переменные окружения для пресета можно установить в параметре --set NAME=VALUE. Эти значения будут одинаковыми как для пресета по умолчанию, так и для всех пользовательских.
По умолчанию пресеты размещаются в каталоге share, но можно указать их расположение вручную в параметре --preset-dir=NAME.
По умолчанию pgpro_tune работает с файлом конфигурации postgresql.conf, расположенным в каталоге данных. Каталог данных можно указать с помощью -D или --pgdata=DATADIR, либо задать с помощью переменной окружения PGDATA. При запуске pgpro_tune в initdb утилита будет использовать каталог данных initdb.
Файл конфигурации также можно указать с помощью --config-file=FILENAME.
Утилита pgpro_tune записывает свои изменения в отдельный блок в конце файла конфигурации с комментарием, что он был добавлен pgpro_tune. За подробностями обратитесь к примеру пресета.
Параметры #
- --config-file=- имя_файла
- Указывает имя основного файла конфигурации. 
- -D- каталог_данных- --pgdata=- каталог_данных
- Указывает каталог, где будет храниться кластер баз данных. 
- --default-options=- параметры
- Задаёт параметры для стандартного пресета. 
- --no-default
- Отключает стандартный пресет. Обратите внимание, что в этом случае обязательно должен быть указан другой пресет либо с помощью параметра - -P, либо в качестве последнего параметра в виде имени этого пресета.
- -O- параметры-пресета- --options=- параметры-пресета
- Указывает параметры, которые необходимо передать непосредственно пресету, заданному ранее в параметре - -P, или пресету, указанному в качестве последнего параметра командной строки, если- -Pне использовался.
- -P- имя- --preset=- имя
- Указывает имя пресета. Если указано несколько имён, пресеты выполняются по очереди с учётом вывода предыдущего пресета. - Примечание- Имя пресета может быть указано либо в этом параметре, либо в качестве последнего параметра. Использование обоих вариантов одновременно приведёт к ошибке. 
- --preset-dir=- имя
- Указывает каталог, содержащий пресеты. По умолчанию пресеты находятся в каталоге - share.
- --set=- имя- значение
- Устанавливает переменную окружения для пресетов. 
- --show
- Показывает все доступные пресеты из каталога, указанного в параметре - --preset-dir, если он задан, или из каталога по умолчанию в противном случае.
- -V- --version
- Вывести версию pgpro_tune и завершиться. 
- -?- --help
- Показать справку по аргументам командной строки pgpro_tune и завершиться. 
Переменные окружения #
pgpro_tune устанавливает следующие переменные окружения перед запуском пресетов.
- ENABLE_CRASH_INFO— если установлена, Postgres Pro был собран с параметром- --enable-crash-info.
- ENABLE_NLS— если установлена, Postgres Pro был собран с параметром- --enable-nls.
- ENABLE_PGPRO_TUNE— если установлена, Postgres Pro был собран с параметром- --enable-pgpro-tune.
- USE_BONJOUR— если установлена, Postgres Pro был собран с параметром- --with-bonjour.
- USE_BSD_AUTH— если установлена, Postgres Pro был собран с параметром- --with-bsd-auth.
- USE_ICU— если установлена, Postgres Pro был собран с параметром- --with-icu.
- USE_LDAP— если установлена, Postgres Pro был собран с параметром- --with-ldap.
- USE_LIBUNWIND— если установлена, Postgres Pro был собран с параметром- --with-libunwind.
- USE_LIBXML— если установлена, Postgres Pro был собран с параметром- --with-libxml.
- USE_LIBXSLT— если установлена, Postgres Pro был собран с параметром- --with-libxslt.
- USE_LLVM— если установлена, Postgres Pro был собран с параметром- --with-llvm.
- USE_LZ4— если установлена, Postgres Pro был собран с параметром- --with-lz4.
- USE_OPENSSL— если установлена, Postgres Pro был собран с параметром- --with-openssl.
- USE_PAM— если установлена, Postgres Pro был собран с параметром- --with-pam.
- USE_SYSTEMD— если установлена, Postgres Pro был собран с параметром- --with-systemd.
- USE_ZSTD— если установлена, Postgres Pro был собран с параметром- --with-zstd.
Создание пресетов #
Пресет — это исполняемый файл, обычно скрипт оболочки, который преобразует информацию, передаваемую через переменные окружения, в набор параметров конфигурации.
Ожидаемый вывод пресета — набор специально отформатированных строк. Первый непробельный символ — индикатор интерпретации содержимого строки для pgpro_tune. Индикатор должен быть одним из следующих символов:
- #для комментирования, остальная часть выходной строки будет записана в файл конфигурации после «#».
- =для замены, остальная часть выходной строки должна содержать пару параметров- NAMEи- VALUE(приемлемы оба варианта:- NAME=- VALUEи- NAME- VALUE). Строка- NAME = VALUEбудет записана в файл конфигурации. Текст после- VALUEбудет добавлен как комментарий.
- =+или- +=для добавления, остальная часть выходной строки должна содержать пару параметров- NAMEи- VALUE.- VALUEбудет добавлен к предыдущему действующему значению параметра- NAMEсзади (- =+) или спереди (- +=). Если действующего значения нет,- ADDработает как замена. Текст после- VALUEбудет добавлен как комментарий.
- -=для отмены, остальная часть выходной строки должна содержать пару параметров- NAMEи- VALUE. Если параметр- NAMEимеет действующее значение, содержащее- VALUE, оно будет удалено, а остальная часть действующего значения останется прежней. Текст после- VALUEбудет добавлен в качестве комментария. Если действующего значения нет, ничего не меняется.
Пример пресета #
Предположим, есть следующий файл конфигурации с именем test.conf:
work_mem = 4MB # Default value shared_preload_libraries = 'plantuner' search_path = '"$user",wrong_schema,public'
И следующий пресет с именем test.tune:
echo "# Adding new configuration parameters." #Replace configuration parameter value by a new one echo "work_mem = 8MB" #Append to the start of existing value echo "shared_preload_libraries += pg_stat_statements" #Append to the end of existing value echo "shared_preload_libraries =+ pg_prewarm" #Withdraw from existing value echo "search_path -= 'wrong_schema'"
Чтобы использовать этот пресет, выполните следующую команду:
pgpro_tune --config-file=/path/to/test.conf -P/path/to/test.tune --no-default
Эта команда приведёт к следующим изменениям файла конфигурации:
#------------------------------------------------------------------------------ # The following settings were added by pgpro_tune. # pgpro_tune was run with the following options: # --no-default --config-file=/path/to/test/conf -P/path/to/test/tune --no-default # At YYYY-MM-DD HH:MM:SS #------------------------------------------------------------------------------ # Adding new configuration parameters. work_mem = 8MB shared_preload_libraries = 'pg_stat_statements, plantuner' shared_preload_libraries = 'pg_stat_statements, plantuner, pg_prewarm' search_path = '"$user", public' #------------------------------------------------------------------------------ # End of settings added by pgpro_tune at YYYY-MM-DD HH-MM-SS #------------------------------------------------------------------------------