Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

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.

Дополнительные параметры можно указать с помощью -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 устанавливает следующие переменные окружения перед запуском пресетов.

  • EDITION — редакция Postgres Pro.

  • ENABLE_CRASH_INFO — если установлена, Postgres Pro был собран с параметром --enable-crash-info.

  • ENABLE_NLS — если установлена, Postgres Pro был собран с параметром --enable-nls.

  • ENABLE_PGPRO_TUNE — если установлена, Postgres Pro был собран с параметром --enable-pgpro-tune.

  • MEMMB — размер оперативной памяти в мегабайтах.

  • MVER — основная версия Postgres Pro.

  • NCPU — количество процессоров.

  • 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
#------------------------------------------------------------------------------