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