Tarantool CE/EE Documentation portal logo
Помощь
Обновлена 15 сентября 2026 г. в 08:55

Справочник по конфигурации

В этом разделе описаны все параметры конфигурации, доступные в Tarantool.

Большинство параметров конфигурации, описанных в этом справочнике, можно применить к конкретному экземпляру, набору реплик, группе или глобально ко всем экземплярам. Для этого необходимо задать требуемый параметр на соответствующем уровне.

app

Tarantool можно использовать в качестве сервера приложений для запуска собственных Lua-приложений. В секции app загружается приложение, а в подсекции app.cfg задается его конфигурация.

app.cfg

Конфигурация приложения, загружаемого с помощью app.file или app.module.

Пример

В примере ниже приложение загружается из файла myapp.lua, расположенного рядом с YAML-файлом конфигурации:

app:  file: 'myapp.lua'  cfg:    greeting: 'Hello'

Пример на GitHub: application

Тип: map

Значение по умолчанию: nil

Переменная окружения: TT_APP_CFG

app.file

Путь к Lua-файлу, из которого загружается приложение.

Тип: string

Значение по умолчанию: nil

Переменная окружения: TT_APP_FILE

app.module

Lua-модуль, из которого загружается приложение.

Пример

Секция app может быть размещена в любой области видимости конфигурации. Например, в шардированном кластере можно задать разные приложения для хранилищ и роутеров:

groups:  storages:    app:      module: storage      # ...  routers:    app:      module: router      # ...

Тип: string

Значение по умолчанию: nil

Переменная окружения: TT_APP_MODULE

audit_log

Раздел audit_log определяет параметры конфигурации, связанные с журналом аудита.

audit_log.extract_key

Если установлено значение true, подсистема аудита извлекает и выводит только первичный ключ вместо полных кортежей в событиях DML (space_insert, space_replace, space_delete). В противном случае в журнал записываются полные кортежи. Параметр может быть полезен при работе с большими кортежами.

Тип: boolean

Значение по умолчанию: false

Переменная окружения: TT_AUDIT_LOG_EXTRACT_KEY

audit_log.file

Указывает файл для назначения журнала аудита. Тип file можно задать с помощью параметра audit_log.to. Если журналы записываются в файл, Tarantool переоткрывает журнал аудита при получении сигнала SIGHUP.

Тип: string

Значение по умолчанию: 'var/log/{{ instance_name }}/audit.log'

Переменная окружения: TT_AUDIT_LOG_FILE

audit_log.filter

Включает запись в журнал для указанного подмножества событий аудита. Параметр принимает следующие значения:

Параметр содержит либо одно значение из раздела «Возможные значения» (см. ниже), либо их комбинацию.

Чтобы включить пользовательские события аудита, укажите значение custom в этом параметре.

Пример

filter: [ user_create,data_operations,ddl,custom ]  format: json  spaces: [ bands ]  extract_key: truegroups:  group001:    replicasets:      replicaset001:        instances:          instance001:            iproto:              listen:              - uri: '127.0.0.1:3301'

Тип: array

Возможные значения: 'all', 'audit', 'auth', 'priv', 'ddl', 'dml', 'data_operations', 'compatibility', 'audit_enable', 'auth_ok', 'auth_fail', 'disconnect', 'user_create', 'user_drop', 'role_create', 'role_drop', 'user_disable', 'user_enable', 'user_grant_rights', 'role_grant_rights', 'role_revoke_rights', 'password_change', 'access_denied', 'eval', 'call', 'space_select', 'space_create', 'space_alter', 'space_drop', 'space_insert', 'space_replace', 'space_delete', 'custom'

Значение по умолчанию: 'nil'

Переменная окружения: TT_AUDIT_LOG_FILTER

audit_log.format

Указывает формат, используемый для журнала аудита.

Пример

Если задать значение plain,

audit_log:  to: file  format: plain

вывод в файле может выглядеть следующим образом:

2024-01-17T00:12:27.155+03004b5a2624-28e5-4b08-83c7-035a0c5a1db9INFO remote:unix/:(socket)session_type:consolemodule:tarantooluser:admintype:space_createtag:description:Create space Bands

Тип: string

Возможные значения: 'json', 'csv', 'plain'

Значение по умолчанию: 'json'

Переменная окружения: TT_AUDIT_LOG_FORMAT

audit_log.nonblock

Определяет поведение записи в журнал, если система не готова к записи. Если установлено значение true, Tarantool не блокируется при записи в журнал, если система недоступна для записи, и вместо этого выводит сообщение. Использование этого значения может повысить производительность журналирования ценой потери некоторых сообщений журнала.

Тип: boolean

Значение по умолчанию: false

Переменная окружения: TT_AUDIT_LOG_NONBLOCK

audit_log.pipe

Указывает канал для назначения журнала аудита. Тип pipe можно задать с помощью параметра audit_log.to. Если журнал представляет собой программу, её PID сохраняется в поле audit.pid. Для ротации журналов необходимо отправить программе сигнал.

Пример

При запуске сервера запускается программа cronolog, и все сообщения audit_log направляются на стандартный ввод (stdin) cronolog.

audit_log:  to: pipe  pipe: 'cronolog audit_tarantool.log'

Тип: string

Значение по умолчанию: box.NULL

Переменная окружения: TT_AUDIT_LOG_PIPE

audit_log.spaces

Массив имен спейсов, для которых следует записывать события операций с данными (space_select, space_insert, space_replace, space_delete). Массив принимает строковые значения. Если установлено значение box.NULL, события операций с данными записываются для всех спейсов.

Пример

В примере записываются только события спейсов bands и singers:

audit_log:  spaces: [bands, singers]

Тип: array

Значение по умолчанию: box.NULL

Переменная окружения: TT_AUDIT_LOG_SPACES

audit_log.to

Включает журнал аудита и определяет расположение журнала. Параметр принимает следующие значения:

  • devnull: отключить журнал аудита.
  • file: записывать журналы аудита в файл (см. audit_log.file).
  • pipe: запустить программу и записывать журналы аудита в неё (см. audit_log.pipe).
  • syslog: записывать журналы аудита в системный журнал (см. audit_log.syslog.*).

По умолчанию журнал аудита отключен.

Пример

Базовая конфигурация журнала аудита может выглядеть следующим образом:

audit_log:  to: file  file: 'audit_tarantool.log'  filter: [ user_create,data_operations,ddl,custom ]  format: json  spaces: [ bands ]  extract_key: true

Тип: string

Возможные значения: 'devnull', 'file', 'pipe', 'syslog'

Значение по умолчанию: 'devnull'

Переменная окружения: TT_AUDIT_LOG_TO

audit_log.syslog.*

audit_log.syslog.server

audit_log.syslog.facility

Указывает ключевое слово системного журнала, которое сообщает syslogd, куда отправлять сообщение. Включить запись в системный журнал можно с помощью параметра audit_log.to.

См. также: пример конфигурации syslog

Тип: string

Возможные значения: 'auth', 'authpriv', 'cron', 'daemon', 'ftp', 'kern', 'lpr', 'mail', 'news', 'security', 'syslog', 'user', 'uucp', 'local0', 'local1', 'local2', 'local3', 'local4', 'local5', 'local6', 'local7' Значение по умолчанию: 'local7'

Переменная окружения: TT_AUDIT_LOG_SYSLOG_FACILITY

audit_log.syslog.identity

Указывает имя приложения для отображения в журналах. Включить запись в системный журнал можно с помощью параметра audit_log.to.

См. также: пример конфигурации syslog

Тип: string

Значение по умолчанию: 'tarantool'

Переменная окружения: TT_AUDIT_LOG_SYSLOG_IDENTITY

audit_log.syslog.server

Задает расположение сервера syslog. Это может быть путь к Unix-сокету, начинающийся с 'unix:', или номер порта IPv4. Включить запись в системный журнал можно с помощью параметра audit_log.to.

Пример

audit_log:  to: syslog  syslog:    server: 'unix:/dev/log'    facility: 'user'    identity: 'tarantool_audit'  filter: [ audit, auth, priv, password_change, access_denied ]  extract_key: falsegroups:  group001:    replicasets:      replicaset001:        instances:          instance001:            iproto:              listen:              - uri: '127.0.0.1:3301'

These options are interpreted as a message for the syslogd program, which runs in the background of any Unix-like platform.

An example of a Tarantool audit log entry in the syslog:

09:32:52 tarantool_audit: {"time": "2024-02-08T09:32:52.190+0300", "uuid": "94454e46-9a0e-493a-bb9f-d59e44a43581", "severity": "INFO", "remote": "unix/:(socket)", "session_type": "console", "module": "tarantool", "user": "admin", "type": "space_create", "tag": "", "description": "Create space bands"}

Тип: string

Значение по умолчанию: box.NULL

Переменная окружения: TT_AUDIT_LOG_SYSLOG_SERVER

compat

В секции compat задаются значения параметров модуля compat.

compat.binary_data_decoding

Определяет способ хранения полей с бинарными данными в Lua после декодирования:

  • new: в виде объектов varbinary
  • old: в виде обычных строк

См. также: compat-option-binary-decoding

Тип: string

Возможные значения: 'new', 'old'

Значение по умолчанию: 'new'

Переменная окружения: TT_COMPAT_BINARY_DATA_DECODING

compat.box_cfg_replication_sync_timeout

Задает время ожидания синхронизации репликации по умолчанию:

  • new: 0
  • old: 300 секунд

См. также: compat-option-replication-timeout

Тип: string

Возможные значения: 'new', 'old'

Значение по умолчанию: 'new'

Переменная окружения: TT_COMPAT_BOX_CFG_REPLICATION_SYNC_TIMEOUT

compat.box_error_serialize_verbose

Начиная с: 3.1.0

Задает уровень детализации при сериализации объектов ошибок:

  • new: сериализовать сообщение об ошибке вместе с другими потенциально полезными полями
  • old: сериализовать только сообщение об ошибке

Тип: string

Возможные значения: 'new', 'old'

Значение по умолчанию: 'old'

Переменная окружения: TT_COMPAT_BOX_ERROR_SERIALIZE_VERBOSE

compat.box_error_unpack_type_and_code

Начиная с: 3.1.0

Определяет, показывать ли поля ошибки в box.error.unpack():

  • new: не показывать поля base_type и custom_type; не показывать поле code, если оно равно 0. Обратите внимание, что base_type по-прежнему доступен для объекта ошибки.
  • old: показывать все поля

Тип: string

Возможные значения: 'new', 'old'

Значение по умолчанию: 'old'

Переменная окружения: TT_COMPAT_BOX_ERROR_UNPACK_TYPE_AND_CODE

compat.box_info_cluster_meaning

Определяет поведение box.info.cluster:

  • new: показывать весь кластер
  • old:: показывать текущий набор реплик

См. также: compat-option-box-info-cluster

Тип: string

Возможные значения: 'new', 'old'

Значение по умолчанию: 'new'

Переменная окружения: TT_COMPAT_BOX_INFO_CLUSTER_MEANING

compat.box_session_push_deprecation

Определяет, вызывать ли ошибку при попытках вызова устаревшей функции box.session.push:

  • new: вызывать ошибку
  • old: не вызывать ошибку

См. также: compat-option-session-push-deprecation

Тип: string

Возможные значения: 'new', 'old'

Значение по умолчанию: 'old'

Переменная окружения: TT_COMPAT_BOX_SESSION_PUSH_DEPRECATION

compat.box_space_execute_priv

Определяет, можно ли предоставлять привилегию execute для спейсов:

  • new: вызывается ошибка
  • old: привилегию можно предоставить, но она не будет иметь фактического эффекта

Тип: string

Возможные значения: 'new', 'old'

Значение по умолчанию: 'new'

Переменная окружения: TT_COMPAT_BOX_SPACE_EXECUTE_PRIV

compat.box_space_max

Задает максимальный идентификатор спейса (box.schema.SPACE_MAX):

  • new: 2147483646
  • old: 2147483647

Лимит был уменьшен, так как старое максимальное значение используется в качестве индикатора ошибки в C API box.

Тип: string

Возможные значения: 'new', 'old'

Значение по умолчанию: 'new'

Переменная окружения: TT_COMPAT_BOX_SPACE_MAX

compat.box_tuple_extension

Управляет битами возможностей IPROTO_FEATURE_CALL_RET_TUPLE_EXTENSION и IPROTO_FEATURE_CALL_ARG_TUPLE_EXTENSION, которые определяют кодирование кортежей в запросах iproto call и eval.

  • new: кортежи с форматами кодируются как MP_TUPLE
  • old: кортежи с форматами кодируются как MP_ARRAY

Тип: string

Возможные значения: 'new', 'old'

Значение по умолчанию: 'new'

Переменная окружения: TT_COMPAT_BOX_TUPLE_EXTENSION

compat.box_tuple_new_vararg

Управляет тем, как box.tuple.new интерпретирует список аргументов:

  • new: как значение с форматом кортежа
  • old: как массив полей кортежа

Тип: string

Возможные значения: 'new', 'old'

Значение по умолчанию: 'new'

Переменная окружения: TT_COMPAT_BOX_TUPLE_NEW_VARARG

compat.c_func_iproto_multireturn

Управляет обертыванием множественных результатов хранимой C-функции при их возврате через iproto:

  • new: возвращать без обертывания (в соответствии с локальным вызовом через box.func)
  • old: обертывать результаты в массив MessagePack

Тип: string

Возможные значения: 'new', 'old'

Значение по умолчанию: 'new'

Переменная окружения: TT_COMPAT_C_FUNC_IPROTO_MULTIRETURN

compat.fiber_channel_close_mode

Определяет поведение каналов файберов после закрытия:

  • new: помечать канал как доступный только для чтения
  • old: уничтожать объект канала

См. также: compat-option-fiber-channel

Тип: string

Возможные значения: 'new', 'old'

Значение по умолчанию: 'new'

Переменная окружения: TT_COMPAT_FIBER_CHANNEL_CLOSE_MODE

compat.fiber_slice_default

Определяет максимальное время выполнения файбера без передачи управления (yield):

  • new: {warn = 0.5, err = 1.0}
  • old: бесконечность (предупреждения или ошибки не вызываются).

См. также: compat-option-fiber-slice

Тип: string

Возможные значения: 'new', 'old'

Значение по умолчанию: 'new'

Переменная окружения: TT_COMPAT_FIBER_SLICE_DEFAULT

compat.json_escape_forward_slash

Определяет, экранировать ли символ косой черты '/' с помощью обратной косой черты в результате json.encode():

  • new: не экранировать косую черту
  • old: экранировать косую черту

См. также: compat-option-json-slash

Тип: string

Возможные значения: 'new', 'old'

Значение по умолчанию: 'new'

Переменная окружения: TT_COMPAT_JSON_ESCAPE_FORWARD_SLASH

compat.sql_priv

Определяет, включать ли проверку доступа для SQL-запросов по iproto:

  • new: проверять права доступа пользователя
  • old: разрешать любому пользователю выполнять SQL по iproto

Тип: string

Возможные значения: 'new', 'old'

Значение по умолчанию: 'new'

Переменная окружения: TT_COMPAT_SQL_PRIV

compat.sql_seq_scan_default

Управляет значением по умолчанию для настройки сессии sql_seq_scan:

  • new: false
  • old: true

См. также: compat-option-sql-scan

Тип: string

Возможные значения: 'new', 'old'

Значение по умолчанию: 'new'

Переменная окружения: TT_COMPAT_SQL_SEQ_SCAN_DEFAULT

compat.yaml_pretty_multiline

Определяет, кодировать ли в стиле блочного скаляра все многострочные строки или только те, которые содержат подстроку \n\n:

  • new: все многострочные строки
  • old: только строки, содержащие подстроку \n\n

См. также: compat-option-lyaml

Тип: string

Возможные значения: 'new', 'old'

Значение по умолчанию: 'new'

Переменная окружения: TT_COMPAT_YAML_PRETTY_MULTILINE

conditional

Раздел conditional определяет части конфигурации, которые применяются к экземплярам, удовлетворяющим определенным условиям.

conditional.if

Задает условную секцию конфигурации. Параметры конфигурации, определенные внутри секции conditional.if, применяются только к экземплярам, для которых указанное условие истинно.

Условия могут включать одну переменную – tarantool_version: версию Tarantool из трех чисел, запущенную на экземпляре, например, 3.1.0. Она сравнивается со значениями литералов версии, которые представляют собой три числа, разделенные точками (x.y.z).

В условиях доступны следующие операторы:

  • сравнения: >, <, >=, <=, ==, !=
  • логические операторы || (ИЛИ) и && (И)
  • круглые скобки ()

Пример:

В этом примере различные части конфигурации применяются к экземплярам, на которых запущены версии Tarantool выше и ниже 3.1.0:

  • На версиях ниже 3.1.0 метке upgraded присваивается значение false.
  • На версиях 3.1.0 и новее метке upgraded присваивается значение true. Кроме того, задаются новые параметры compat. Эти параметры были добавлены в версии 3.1.0, поэтому на более старых версиях они вызовут ошибку.
conditional:  - if: tarantool_version < 3.1.0    labels:      upgraded: 'false'  - if: tarantool_version >= 3.1.0    labels:      upgraded: 'true'    compat:      box_error_serialize_verbose: 'new'      box_error_unpack_type_and_code: 'new'

См. также: configuration_conditional

config

Раздел config определяет различные параметры, связанные с централизованной конфигурацией.

config.reload

Определяет способ перезагрузки конфигурации. Этот параметр принимает следующие значения:

  • auto: конфигурация перезагружается автоматически при ее изменении.
  • manual: конфигурацию следует перезагружать вручную. В этом случае перезагрузку конфигурации можно выполнить в коде приложения с помощью config:reload().

См. также: Перезагрузка конфигурации

Тип: string

Possible values: 'auto', 'manual'

Значение по умолчанию: 'auto'

Переменная окружения: TT_CONFIG_RELOAD

config.context.*

В этом разделе описаны параметры, связанные с загрузкой параметров конфигурации из внешнего хранилища, такого как внешние файлы или переменные окружения.

config.context

Определяет способ загрузки параметров из внешнего хранилища. Например, этот параметр можно использовать для загрузки паролей из защищенного хранилища. Примеры приведены в разделе configuration_credentials_loading_secrets.

Тип: map

Значение по умолчанию: nil

Переменная окружения: TT_CONFIG_CONTEXT

config.context.

Имя сущности, идентифицирующей загружаемое значение конфигурации.

config.context..env

Имя переменной окружения, из которой загружается значение конфигурации. Чтобы загрузить значение конфигурации из переменной окружения, задайте значение env для параметра config.context..from.

Пример

В этом примере пароли загружаются из переменных окружения DBADMIN_PASSWORD и SAMPLEUSER_PASSWORD:

config:  context:    dbadmin_password:      from: env      env: DBADMIN_PASSWORD    sampleuser_password:      from: env      env: SAMPLEUSER_PASSWORD

См. также: configuration_credentials_loading_secrets

config.context..from

Тип хранилища, из которого загружается значение конфигурации. Доступны следующие типы хранилища:

  • file: загрузка значения конфигурации из файла. В этом случае необходимо указать путь к файлу с помощью параметра config.context..file.
  • env: загрузка значения конфигурации из переменной окружения. В этом случае укажите имя переменной окружения с помощью параметра config.context..env.

config.context..file

Путь к файлу, из которого загружается значение конфигурации. Чтобы загрузить значение конфигурации из файла, задайте значение file для параметра config.context..from.

Пример

В этом примере пароли загружаются из файлов dbadmin_password.txt и sampleuser_password.txt:

config:  context:    dbadmin_password:      from: file      file: secrets/dbadmin_password.txt      rstrip: true    sampleuser_password:      from: file      file: secrets/sampleuser_password.txt      rstrip: true

См. также: configuration_credentials_loading_secrets

config.context..rstrip

(Необязательный) Определяет, следует ли удалять пробельные символы и символы перевода строки в конце данных.

config.etcd.*

В этом разделе описаны параметры, связанные с настройками подключения к централизованному хранилищу на базе etcd. Если параметру replication.failover задано значение supervised, Tarantool также использует etcd для поддержания состояния координаторов отказоустойчивости.

config.etcd.endpoints

Список конечных точек для доступа к серверу etcd.

См. также: etcd_local_configuration

Тип: array

Значение по умолчанию: nil

Переменная окружения: TT_CONFIG_ETCD_ENDPOINTS

config.etcd.prefix

Префикс ключа, используемый для поиска конфигурации на сервере etcd. Tarantool выполняет поиск ключей по следующему пути: <prefix>/config/*. Обратите внимание, что <prefix> должен начинаться с косой черты (/).

См. также: etcd_local_configuration

Тип: string

Значение по умолчанию: nil

Переменная окружения: TT_CONFIG_ETCD_PREFIX

config.etcd.username

Имя пользователя для аутентификации.

См. также: etcd_local_configuration

Тип: string

Значение по умолчанию: nil

Переменная окружения: TT_CONFIG_ETCD_USERNAME

config.etcd.password

Пароль для аутентификации.

См. также: etcd_local_configuration

Тип: string

Значение по умолчанию: nil

Переменная окружения: TT_CONFIG_ETCD_PASSWORD

config.etcd.ssl.ca_file

Путь к файлу доверенных центров сертификации (CA).

Тип: string

Значение по умолчанию: nil

Переменная окружения: TT_CONFIG_ETCD_SSL_CA_FILE

config.etcd.ssl.ca_path

Путь к каталогу с сертификатами для проверки узла.

Тип: string

Значение по умолчанию: nil

Переменная окружения: TT_CONFIG_ETCD_SSL_CA_PATH

config.etcd.ssl.ssl_cert

Since: 3.2.0

Путь к файлу SSL-сертификата.

Тип: string

Значение по умолчанию: nil

Переменная окружения: TT_CONFIG_ETCD_SSL_SSL_CERT

config.etcd.ssl.ssl_key

Путь к файлу закрытого SSL-ключа.

Тип: string

Значение по умолчанию: nil

Переменная окружения: TT_CONFIG_ETCD_SSL_SSL_KEY

config.etcd.ssl.verify_host

Включает проверку имени сертификата (CN) на соответствие указанному хосту.

Тип: boolean

Значение по умолчанию: nil

Переменная окружения: TT_CONFIG_ETCD_SSL_VERIFY_HOST

config.etcd.ssl.verify_peer

Включает проверку SSL-сертификата узла.

Тип: boolean

Значение по умолчанию: nil

Переменная окружения: TT_CONFIG_ETCD_SSL_VERIFY_PEER

config.etcd.http.request.timeout

Время, отведенное на обработку HTTP-запроса к серверу etcd: от отправки запроса до получения ответа.

См. также: etcd_local_configuration

Тип: number

Значение по умолчанию: nil

Переменная окружения: TT_CONFIG_ETCD_HTTP_REQUEST_TIMEOUT

config.etcd.http.request.unix_socket

Unix-доменный сокет, используемый для подключения к серверу etcd.

Тип: string

Значение по умолчанию: nil

Переменная окружения: TT_CONFIG_ETCD_HTTP_REQUEST_UNIX_SOCKET

config.etcd.watchers.reconnect_max_attempts

Since: 3.1.0

Максимальное количество попыток переподключения к серверу etcd в случае сбоя соединения.

Тип: integer

Значение по умолчанию: nil

Переменная окружения: TT_CONFIG_ETCD_WATCHERS_RECONNECT_MAX_ATTEMPTS

config.etcd.watchers.reconnect_timeout

Since: 3.1.0

Время ожидания (в секундах) между попытками переподключения к серверу etcd в случае сбоя соединения.

Тип: number

Значение по умолчанию: nil

Переменная окружения: TT_CONFIG_ETCD_WATCHERS_RECONNECT_TIMEOUT

config.storage.*

В этом разделе описаны параметры, связанные с настройками подключения к централизованному хранилищу на базе Tarantool.

config.storage.endpoints

Массив конечных точек для доступа к хранилищу конфигурации. Каждая конечная точка может включать следующие поля:

  • uri: URI экземпляра хранилища конфигурации.
  • login: имя пользователя для подключения к экземпляру.
  • password: пароль для аутентификации.
  • params: SSL-параметры, необходимые для зашифрованных соединений (.params.*).

См. также: centralized_configuration_storage_connect_tarantool

Тип: array

Значение по умолчанию: nil

Переменная окружения: TT_CONFIG_STORAGE_ENDPOINTS

config.storage.prefix

Префикс ключа, используемый для поиска конфигурации в централизованном хранилище конфигурации. Tarantool выполняет поиск ключей по следующему пути: <prefix>/config/*. Обратите внимание, что <prefix> должен начинаться с косой черты (/).

См. также: centralized_configuration_storage_connect_tarantool

Тип: string

Значение по умолчанию: nil

Переменная окружения: TT_CONFIG_STORAGE_PREFIX

config.storage.reconnect_after

Время ожидания в секундах перед переподключением к хранилищу конфигурации.

Тип: number

Значение по умолчанию: 3

Переменная окружения: TT_CONFIG_STORAGE_RECONNECT_AFTER

config.storage.timeout

Интервал (в секундах) для проверки состояния хранилища конфигурации.

См. также: centralized_configuration_storage_connect_tarantool

Тип: number

Значение по умолчанию: 3

Переменная окружения: TT_CONFIG_STORAGE_TIMEOUT

console

Настройка административной консоли. Для подключения к консоли используется tt connect.

console.enabled

Определяет, нужно ли слушать Unix-сокет, указанный в параметре console.socket.

Если для параметра установлено значение false, административная консоль отключена.

Тип: boolean

Значение по умолчанию: true

Переменная окружения: TT_CONSOLE_ENABLED

console.socket

Unix-сокет для административной консоли.

Учитывайте следующие особенности:

  • Допускается только Unix domain socket. Настроить TCP-сокет таким образом нельзя.
  • console.socket – это путь к файлу без префиксов unix: или unix/:.
  • Если путь к файлу относительный, он интерпретируется относительно process.work_dir.

Тип: string

Значение по умолчанию: 'var/run/{{ instance_name }}/tarantool.control'

Переменная окружения: TT_CONSOLE_SOCKET

credentials

В разделе credentials можно создавать пользователей и назначать им указанные привилегии. Подробнее см. в configuration_credentials.

credentials.roles.*

credentials.roles

Массив ролей, которые можно назначать пользователям или другим ролям.

Пример

В примере ниже роль writers_space_reader получает привилегии на чтение данных в спейсе writers:

См. также: configuration_credentials_managing_users_roles

Тип: map

Значение по умолчанию: nil

Переменная окружения: TT_CREDENTIALS_ROLES

credentials.roles.<role_name>.roles

Массив ролей, назначенных этой роли.

credentials.roles.<role_name>.privileges

Массив привилегий, назначенных этой роли.

См. <user_or_role_name>.privileges.*.

credentials.users.*

credentials.users

Массив пользователей.

Пример

В этом примере sampleuser получает следующие привилегии:

  • Привилегии, назначенные роли writers_space_reader.
  • Привилегии на чтение и изменение данных в спейсе books.

См. также: configuration_credentials_managing_users_roles

Тип: map

Значение по умолчанию: nil

Переменная окружения: TT_CREDENTIALS_USERS

credentials.users..password

Пароль пользователя.

Пример

В примере ниже задается пароль для пользователя dbadmin:

credentials:  users:    dbadmin:      password: 'T0p_Secret_P@$$w0rd'

См. также: configuration_credentials_loading_secrets

credentials.users..roles

Массив ролей, назначенных этому пользователю.

credentials.users..privileges

Массив привилегий, назначенных этому пользователю.

См. <user_or_role_name>.privileges.*.

<user_or_role_name>.privileges.*

<user_or_role_name>.privileges

Привилегии, которые можно назначить пользователю или роли с помощью следующих опций:

<user_or_role_name>.privileges.permissions

Разрешения, назначенные этому пользователю или пользователю с этой ролью.

Пример

В этом примере sampleuser получает привилегии на чтение и изменение данных в спейсе books:

См. также: configuration_credentials_managing_users_roles

<user_or_role_name>.privileges.spaces

Спейсы, к которым этот пользователь или пользователь с этой ролью получает указанные разрешения.

Пример

В этом примере sampleuser получает привилегии на чтение и изменение данных в спейсе books:

См. также: configuration_credentials_managing_users_roles

<user_or_role_name>.privileges.functions

Функции, к которым этот пользователь или пользователь с этой ролью получает указанные разрешения.

<user_or_role_name>.privileges.sequences

Последовательности, к которым этот пользователь или пользователь с этой ролью получает указанные разрешения.

<user_or_role_name>.privileges.lua_eval

Определяет, может ли этот пользователь или пользователь с этой ролью выполнять произвольный Lua-код.

<user_or_role_name>.privileges.lua_call

Список глобальных пользовательских Lua-функций, которые может вызывать этот пользователь или пользователь с этой ролью. Чтобы разрешить вызов определенной функции, укажите ее имя в качестве значения. Чтобы разрешить вызов всех глобальных Lua-функций, кроме встроенных, укажите значение all.

Эту опцию следует настраивать вместе с разрешением execute.

Начиная с версии 3.3.0, с помощью опции lua_call можно выдавать пользователям привилегии на вызов указанных Lua-функций на экземпляре во время выполнения (таким образом, это не требует возможности записи в базу данных).

Пример выдачи пользовательских функций пользователю 'alice':

credentials:  users:    alice:      privileges:        - permissions: [execute]          lua_call: [my_func, my_func2]

<user_or_role_name>.privileges.sql

Определяет, может ли этот пользователь или пользователь с этой ролью выполнять произвольное SQL-выражение.

database

Раздел database определяет параметры конфигурации, относящиеся к базе данных, такие как режим чтения-записи экземпляра или уровень изоляции транзакций.

database.hot_standby

Определяет, следует ли запускать сервер в режиме горячего резерва. Этот режим может использоваться для обеспечения отказоустойчивости без репликации.

Предположим, есть два кластерных приложения. В каждом кластере есть один экземпляр с одинаковой конфигурацией:

groups:  group001:    replicasets:      replicaset001:        instances:          instance001:            database:              hot_standby: true            wal:              dir: /tmp/wals            snapshot:              dir: /tmp/snapshots            iproto:              listen:              - uri: '127.0.0.1:3301'

В частности, оба экземпляра используют один и тот же каталог для хранения журналов предзаписи и снимков.

При запуске обоих кластерных приложений на одной машине экземпляр из первого приложения станет основным, а второй – резервным. В журналах второго экземпляра кластера должно появиться уведомление:

main/104/interactive I> Entering hot standby mode

Это означает, что резервный экземпляр готов принять управление, если основной экземпляр выйдет из строя. Резервный экземпляр инициализируется и пытается установить блокировку на каталог для хранения журналов предзаписи, но не может этого сделать, так как основной экземпляр уже установил блокировку на этот каталог.

Если основной экземпляр выходит из строя по любой причине, блокировка снимается. В этом случае резервный экземпляр успешно устанавливает блокировку и становится основным экземпляром.

database.hot_standby не действует:

  • Если для параметра wal.mode установлено значение none.
  • Если для параметра wal.dir_rescan_delay установлено большое значение на macOS или FreeBSD. На этих платформах режим горячего резерва устроен так, что цикл повторяется каждые wal.dir_rescan_delay секунд.
  • Для спейсов, созданных с параметром engine, установленным в значение vinyl.

Примеры на GitHub: hot_standby_1, hot_standby_2

Тип: boolean

Значение по умолчанию: false

Переменная окружения: TT_DATABASE_HOT_STANDBY

database.instance_uuid

UUID экземпляра.

По умолчанию UUID экземпляров генерируются автоматически. database.instance_uuid можно использовать для указания идентификатора экземпляра вручную.

UUID должны соответствовать следующим правилам:

  • Значения должны быть настоящими уникальными идентификаторами, не используемыми другими экземплярами или наборами реплик в общей инфраструктуре.
  • Значения должны использоваться последовательно и не изменяться после первоначальной настройки. Начальные значения хранятся в файлах снимков и проверяются при каждом перезапуске системы.
  • Значения должны соответствовать RFC 4122. Нулевой UUID не допускается.

См. также: database.replicaset_uuid

Тип: string

Значение по умолчанию: [box.NULL](../../reference_lua/box/box_null#box-null)

Переменная окружения: TT_DATABASE_INSTANCE_UUID

database.mode

Режим работы экземпляра. Этот параметр действует, если для параметра replication.failover установлено значение off.

Доступны следующие режимы:

  • rw: экземпляр находится в режиме чтения-записи.
  • ro: экземпляр находится в режиме только чтения.

Если значение не указано явно, значение по умолчанию зависит от количества экземпляров в наборе реплик. Для одного экземпляра используется режим rw, а для нескольких – режим ro.

Пример

Можно установить для параметра database.mode значение rw на всех экземплярах в наборе реплик для создания конфигурации master-master. В этом случае для параметра replication.failover должно быть установлено значение off.

replication:  failover: off
groups:  group001:    replicasets:      replicaset001:        instances:          instance001:            database:              mode: rw            iproto:              listen:              - uri: '127.0.0.1:3301'          instance002:            database:              mode: rw            iproto:              listen:              - uri: '127.0.0.1:3302'
credentials:  users:    replicator:      password: 'topsecret'      roles: [replication]
iproto:  advertise:    peer:      login: replicator
instance001:  database:    mode: rw  iproto:    listen:    - uri: '127.0.0.1:3301'instance002:  database:    mode: rw  iproto:    listen:    - uri: '127.0.0.1:3302'

Тип: string

Значение по умолчанию: [box.NULL](../../reference_lua/box/box_null#box-null) (фактическое значение по умолчанию зависит от количества экземпляров в наборе реплик) Переменная окружения: TT_DATABASE_MODE

database.replicaset_uuid

UUID набора реплик.

По умолчанию UUID наборов реплик генерируются автоматически. database.replicaset_uuid можно использовать для указания идентификатора набора реплик вручную.

См. также: database.instance_uuid

Тип: string

Значение по умолчанию: [box.NULL](../../reference_lua/box/box_null#box-null)

Переменная окружения: TT_DATABASE_REPLICASET_UUID

database.txn_isolation

Уровень изоляции транзакций.

Тип: string

Значение по умолчанию: best-effort

Возможные значения: best-effort`, `read-committed`, `read-confirmed

Переменная окружения: TT_DATABASE_TXN_ISOLATION

database.txn_timeout

Время ожидания (в секундах), по истечении которого транзакция откатывается.

См. также: box.begin()

Тип: number

Значение по умолчанию: 3153600000 (\~100 лет)

Переменная окружения: TT_DATABASE_TXN_TIMEOUT

database.use_mvcc_engine

Определяет, включен ли менеджер транзакций.

Тип: boolean

Значение по умолчанию: false

Переменная окружения: TT_DATABASE_USE_MVCC_ENGINE

failover

Секция failover определяет параметры, связанные с контролируемым отказоустойчивым переключением.

failover.log.to

Начиная с: 3.3.0

Определяет место, куда Tarantool отправляет журналы отказоустойчивого переключения. Этот параметр принимает следующие значения:

  • stderr: запись журналов в стандартный поток вывода ошибок.
  • file: запись журналов в файл (см. failover.log.file).

Тип: string

Значение по умолчанию: 'stderr'

Переменная окружения: TT_FAILOVER_LOG_TO

failover.log.file

Начиная с: 3.3.0

Указывает файл для записи журналов отказоустойчивого переключения. Чтобы записывать журналы в файл, задайте значение file для параметра failover.log.to. В противном случае failover.log.file игнорируется.

Пример

В примере ниже показано, как записывать журналы отказоустойчивого переключения в файл, расположенный в указанном каталоге:

failover:  log:    to: file    file: var/log/failover.log

Тип: string

Значение по умолчанию: nil

Переменная окружения: TT_FAILOVER_LOG_FILE

failover.call_timeout

Начиная с: 3.1.0

Время ожидания вызова (в секундах) для запросов мониторинга и отказоустойчивого переключения к экземпляру.

Тип: number

Значение по умолчанию: 1

Переменная окружения: TT_FAILOVER_CALL_TIMEOUT

failover.connect_timeout

Начиная с: 3.1.0

Время ожидания подключения (в секундах) для запросов мониторинга и отказоустойчивого переключения к экземпляру.

Тип: number

Значение по умолчанию: 1

Переменная окружения: TT_FAILOVER_CONNECT_TIMEOUT

failover.lease_interval

Начиная с: 3.1.0

Временной интервал (в секундах), определяющий, как долго экземпляр может оставаться лидером без запросов на продление от координатора. По истечении этого интервала лидер переключается в режим только для чтения. Это действие выполняется самим экземпляром и работает даже при отсутствии связи между экземпляром и координатором.

Тип: number

Значение по умолчанию: 30

Переменная окружения: TT_FAILOVER_LEASE_INTERVAL

failover.probe_interval

Начиная с: 3.1.0

Временной интервал (в секундах), определяющий, как часто служба мониторинга координатора отказоустойчивого переключения опрашивает экземпляр для получения его статуса.

Тип: number

Значение по умолчанию: 10

Переменная окружения: TT_FAILOVER_PROBE_INTERVAL

failover.renew_interval

Начиная с: 3.1.0

Временной интервал (в секундах), определяющий, как часто координатор отказоустойчивого переключения отправляет продления срока действия режима чтения-записи.

Тип: number

Значение по умолчанию: 10

Переменная окружения: TT_FAILOVER_RENEW_INTERVAL

failover.stateboard.*

Параметры failover.stateboard.* определяют конфигурационные параметры, связанные с поддержанием состояния координаторов отказоустойчивого переключения в удаленном хранилище на базе etcd.

failover.stateboard.keepalive_interval

Начиная с: 3.1.0

Временной интервал (в секундах), определяющий, как долго хранится временная информация о состоянии и как быстро истекает срок действия блокировки.

Тип: number

Значение по умолчанию: 10

Переменная окружения: TT_FAILOVER_STATEBOARD_KEEPALIVE_INTERVAL

failover.stateboard.renew_interval

Начиная с: 3.1.0

Временной интервал (в секундах), определяющий, как часто координатор отказоустойчивого переключения записывает информацию о своем состоянии в etcd. Этот параметр также определяет частоту, с которой активный координатор считывает новые команды из etcd.

Тип: number

Значение по умолчанию: 2

Переменная окружения: TT_FAILOVER_STATEBOARD_RENEW_INTERVAL

feedback

Раздел feedback описывает параметры конфигурации для отправки информации о работающем экземпляре Tarantool на указанный сервер обратной связи.

feedback.crashinfo

Определяет, отправлять ли информацию о сбое в случае аварийного завершения работы экземпляра. Эта информация включает:

  • Общую информацию из вывода uname.
  • Информацию о сборке.
  • Причину сбоя.
  • Трассировку стека.

Чтобы отключить отправку информации о сбое, задайте значение false для этого параметра.

Тип: boolean

Значение по умолчанию: true

Переменная окружения: TT_FEEDBACK_CRASHINFO

feedback.enabled

Определяет, отправлять ли информацию о работающем экземпляре на сервер обратной связи. Чтобы отключить отправку обратной связи, задайте значение false для этого параметра.

Тип: boolean

Значение по умолчанию: true

Переменная окружения: TT_FEEDBACK_ENABLED

feedback.host

Адрес, на который отправляется информация.

Тип: string

Значение по умолчанию: <https://feedback.tarantool.io>

Переменная окружения: TT_FEEDBACK_HOST

feedback.interval

Интервал (в секундах) отправки информации.

Тип: number

Значение по умолчанию: 3600

Переменная окружения: TT_FEEDBACK_INTERVAL

feedback.metrics_collect_interval

Интервал (в секундах) сбора метрик.

Тип: number

Значение по умолчанию: 60

Переменная окружения: TT_FEEDBACK_METRICS_COLLECT_INTERVAL

feedback.metrics_limit

Максимальный объем памяти (в байтах), используемый для хранения метрик перед их отправкой на сервер обратной связи. Если размер собранных метрик превышает это значение, более ранние метрики удаляются.

Тип: integer

Значение по умолчанию: 1024 * 1024 (1048576)

Переменная окружения: TT_FEEDBACK_METRICS_LIMIT

feedback.send_metrics

Определяет, отправлять ли метрики на сервер обратной связи. Обратите внимание, что все собранные метрики удаляются после их отправки на сервер обратной связи.

Тип: boolean

Значение по умолчанию: true

Переменная окружения: TT_FEEDBACK_SEND_METRICS

fiber

Секция fiber описывает параметры, связанные с настройкой файберов, передачи управления и кооперативной многозадачности.

fiber.io_collect_interval

Время (в секундах), в течение которого файбер находится в состоянии сна между итерациями цикла обработки событий.

Параметр fiber.io_collect_interval можно использовать для снижения нагрузки на процессор в развертываниях с большим количеством клиентских подключений, но невысокой частотой запросов (например, когда каждое подключение отправляет лишь несколько запросов в секунду).

Тип: number

Значение по умолчанию: box.NULL

Переменная окружения: TT_FIBER_IO_COLLECT_INTERVAL

fiber.too_long_threshold

Если обработка запроса занимает больше указанного времени (в секундах), файбер выводит предупреждение об этом в журнал.

Параметр fiber.too_long_threshold действует, только если значение log.level больше или равно 4 (warn).

Тип: number

Значение по умолчанию: 0.5

Переменная окружения: TT_FIBER_TOO_LONG_THRESHOLD

fiber.worker_pool_threads

Максимальное количество потоков, используемых при выполнении определенных внутренних процессов (например, socket.getaddrinfo() и coio_call()).

Тип: number

Значение по умолчанию: 4

Переменная окружения: TT_FIBER_WORKER_POOL_THREADS

fiber.slice.*

В этой секции описаны параметры, связанные с настройкой временных интервалов для срезов файберов. Подробности и примеры см. в fiber.set_max_slice.

fiber.slice.warn

Задает временной интервал (в секундах), определяющий предупреждающий срез.

Тип: number

Значение по умолчанию: 0.5

Переменная окружения: TT_FIBER_SLICE_WARN

fiber.slice.err

Задает временной интервал (в секундах), определяющий срез ошибки.

Тип: number

Значение по умолчанию: 1

Переменная окружения: TT_FIBER_SLICE_ERR

fiber.top.*

В этой секции описаны параметры, связанные с настройкой функции fiber.top(), которая обычно используется для отладки. Функция fiber.top() показывает все активные файберы и использование ими процессора.

fiber.top.enabled

Включает или отключает функцию fiber.top().

Включение fiber.top() замедляет переключение файберов примерно на 15%, поэтому по умолчанию эта функция отключена.

Тип: boolean

Значение по умолчанию: false

Переменная окружения: TT_FIBER_TOP_ENABLED

flightrec

Раздел flightrec описывает параметры, относящиеся к конфигурации flight recorder.

flightrec.enabled

Включает flight recorder.

Тип: boolean

Значение по умолчанию: false

Переменная окружения: TT_FLIGHTREC_ENABLED

flightrec.logs_size

Задает размер (в байтах) хранилища логов. Чтобы отключить хранилище логов, задайте значение 0 для этого параметра.

Тип: integer

Значение по умолчанию: 10485760

Переменная окружения: TT_FLIGHTREC_LOGS_SIZE

flightrec.logs_max_msg_size

Задает максимальный размер (в байтах) сообщения лога. Если размер сообщения превышает это ограничение, оно усекается.

Тип: integer

Значение по умолчанию: 4096

Максимум: 16384

Переменная окружения: TT_FLIGHTREC_LOGS_MAX_MSG_SIZE

flightrec.logs_log_level

Задает уровень детализации лога. Значение по умолчанию – 6 (VERBOSE). Подробнее об уровнях логирования см. в описании параметра log_level. Обратите внимание, что значение flightrec.logs_log_level может отличаться от log_level.

Тип: integer

Значение по умолчанию: 6

Переменная окружения: TT_FLIGHTREC_LOGS_LOG_LEVEL

flightrec.metrics_period

Задает период времени (в секундах), определяющий, как долго метрики хранятся с момента дампа. Таким образом, это значение определяет, какой объем исторических данных о метриках собирается до момента сбоя. Частота дампов метрик определяется параметром flightrec.metrics_interval.

Тип: integer

Значение по умолчанию: 180

Переменная окружения: TT_FLIGHTREC_METRICS_PERIOD

flightrec.metrics_interval

Задает интервал времени (в секундах), определяющий частоту дампов метрик. Это значение не должно превышать flightrec.metrics_period.

Тип: number

Значение по умолчанию: 1.0

Минимум: 0.001

Переменная окружения: TT_FLIGHTREC_METRICS_INTERVAL

flightrec.requests_size

Задает размер (в байтах) хранилища данных запросов и ответов. Чтобы отключить хранилище запросов и ответов, задайте значение 0 для этого параметра.

Тип: integer

Значение по умолчанию: 10485760

Переменная окружения: TT_FLIGHTREC_REQUESTS_SIZE

flightrec.requests_max_req_size

Задает максимальный размер (в байтах) записи запроса. Если размер записи превышает это значение, она усекается.

Тип: integer

Значение по умолчанию: 16384

Переменная окружения: TT_FLIGHTREC_REQUESTS_MAX_REQ_SIZE

flightrec.requests_max_res_size

Задает максимальный размер (в байтах) записи ответа. Если размер записи превышает это значение, она усекается.

Тип: integer

Значение по умолчанию: 16384

Переменная окружения: TT_FLIGHTREC_REQUESTS_MAX_RES_SIZE

iproto

Раздел iproto используется для настройки параметров, связанных с взаимодействием с экземплярами кластера и между ними.

iproto.listen

Массив URI, используемых для прослушивания входящих запросов. При необходимости для отдельных URI можно включить SSL, задав дополнительные параметры (.params.*).

Обратите внимание, что значение URI не может содержать параметры, имя пользователя или пароль.

Пример

В примере ниже параметр iproto.listen задан явно для каждого экземпляра в кластере:

groups:  group001:    replicasets:      replicaset001:        instances:          instance001:            iproto:              listen:              - uri: '127.0.0.1:3301'          instance002:            iproto:              listen:              - uri: '127.0.0.1:3302'          instance003:            iproto:              listen:              - uri: '127.0.0.1:3303'

См. также: Соединения

Тип: array

Значение по умолчанию: nil

Переменная окружения: TT_IPROTO_LISTEN

iproto.net_msg_max

Для обработки сообщений Tarantool выделяет fibers. Чтобы накладные расходы на fibers не влияли на работу всей системы, Tarantool ограничивает количество сообщений, обрабатываемых fibers, поэтому некоторые ожидающие запросы блокируются.

  • На мощных системах увеличьте значение net_msg_max, и планировщик начнет обрабатывать ожидающие запросы немедленно.
  • На менее мощных системах уменьшите значение net_msg_max, и накладные расходы могут снизиться. Однако это может занять некоторое время, так как планировщику необходимо дождаться завершения уже выполняющихся запросов.

При достижении net_msg_max Tarantool приостанавливает обработку входящих пакетов до тех пор, пока не будут обработаны более ранние сообщения. Это не прямое ограничение количества fibers, обрабатывающих сетевые сообщения, а скорее системное ограничение пропускной способности канала. Оно, в свою очередь, ограничивает количество входящих сетевых сообщений, которые обрабатывает поток обработки транзакций, и, следовательно, косвенно влияет на fibers, обрабатывающие сетевые сообщения.

Тип: integer

Значение по умолчанию: 768

Переменная окружения: TT_IPROTO_NET_MSG_MAX

iproto.readahead

Размер буфера предчтения, связанного с клиентским соединением. Чем больше буфер, тем больше памяти потребляет активное соединение и тем больше запросов может быть прочитано из буфера операционной системы за один системный вызов.

Рекомендуется убедиться, что буфер может содержать как минимум несколько десятков запросов. Поэтому, если типичный кортеж в запросе имеет большой размер – например, несколько килобайт или даже мегабайт – размер буфера предчтения следует увеличить. Если пакетная обработка запросов не используется, рекомендуется оставить значение по умолчанию.

Тип: integer

Значение по умолчанию: 16320

Переменная окружения: TT_IPROTO_READAHEAD

iproto.threads

Количество сетевых потоков. Возможны необычные сценарии нагрузки, при которых сетевой поток загружен на 100%, а поток обработки транзакций – нет, и сетевой поток становится узким местом. В таком случае задайте значение 2 или больше для параметра iproto_threads. Ядро операционной системы определяет, какое соединение относится к какому потоку.

Тип: integer

Значение по умолчанию: 1

Переменная окружения: TT_IPROTO_THREADS

iproto.advertise.*

iproto.advertise.client

URI, используемый для объявления текущего экземпляра клиентам.

Параметр iproto.advertise.client принимает URI в следующих форматах:

  • Адрес: host:port.
  • Unix-доменный сокет: unix/:.

Обратите внимание, что с помощью этого параметра нельзя задать имя пользователя и пароль. Если удаленному клиенту нужна эта информация, она должна быть передана вне конфигурации кластера.

Тип: string

Значение по умолчанию: [box.NULL](../../reference_lua/box/box_null#box-null)

Переменная окружения: TT_IPROTO_ADVERTISE_CLIENT

iproto.advertise.peer

Настройки, используемые для объявления текущего экземпляра другим членам кластера. Формат этих настроек описан в iproto.advertise.<peer_or_sharding>.*.

Пример

В примере ниже заданы следующие параметры конфигурации:

  • В разделе credentials создан пользователь replicator с ролью replication.
  • В iproto.advertise.peer указано, что другие экземпляры должны подключаться к адресу, заданному в iproto.listen, под пользователем replicator.
credentials:  users:    replicator:      password: 'topsecret'      roles: [replication]iproto:  advertise:    peer:      login: replicatorreplication:  failover: electiongroups:  group001:    replicasets:      replicaset001:        instances:          instance001:            iproto:              listen:              - uri: '127.0.0.1:3301'          instance002:            iproto:              listen:              - uri: '127.0.0.1:3302'          instance003:            iproto:              listen:              - uri: '127.0.0.1:3303'

Тип: map

Переменная окружения: см. iproto.advertise.<peer_or_sharding>.*

iproto.advertise.sharding

Настройки, используемые для объявления текущего экземпляра роутеру и балансировщику. Формат этих настроек описан в iproto.advertise.<peer_or_sharding>.*.

Пример

В примере ниже заданы следующие параметры конфигурации:

  • В разделе credentials созданы пользователи replicator и storage.
  • В iproto.advertise.peer указано, что другие экземпляры должны подключаться к адресу, заданному в iproto.listen, под пользователем replicator.
  • В iproto.advertise.sharding указано, что роутер должен подключаться к хранилищам по адресу, заданному в iproto.listen, под пользователем storage.
credentials:  users:    replicator:      password: 'topsecret'      roles: [replication]    storage:      password: 'secret'      roles: [sharding]iproto:  advertise:    peer:      login: replicator    sharding:      login: storage

Тип: map

Переменная окружения: см. iproto.advertise.<peer_or_sharding>.*

iproto.advertise.<peer_or_sharding>.*

iproto.advertise.<peer_or_sharding>.uri

(Необязательный) URI, используемый для объявления текущего экземпляра. По умолчанию для объявления текущего экземпляра используется URI, заданный в iproto.listen.

Тип: string

Значение по умолчанию: nil

Переменные окружения: TT_IPROTO_ADVERTISE_PEER_URI, TT_IPROTO_ADVERTISE_SHARDING_URI

iproto.advertise.<peer_or_sharding>.login

(Необязательный) Имя пользователя для подключения к текущему экземпляру. Если имя пользователя не задано, используется пользователь guest.

Тип: string

Значение по умолчанию: nil

Переменные окружения: TT_IPROTO_ADVERTISE_PEER_LOGIN, TT_IPROTO_ADVERTISE_SHARDING_LOGIN

iproto.advertise.<peer_or_sharding>.password

(Необязательный) Пароль для указанного пользователя. Если задан login, но пароль отсутствует, он берется из учетных данных пользователя.

Тип: string

Значение по умолчанию: nil

Переменные окружения: TT_IPROTO_ADVERTISE_PEER_PASSWORD, TT_IPROTO_ADVERTISE_SHARDING_PASSWORD

iproto.advertise.<peer_or_sharding>.params

(Необязательный) Параметры URI (.params.*), необходимые для подключения к текущему экземпляру.

.params.*

Параметры URI, которые можно использовать в параметрах iproto.listen.<uri>.params и iproto.advertise.<peer_or_sharding>.params.

.params.transport

С помощью этого параметра можно включить шифрование трафика для обмена данными между клиентом и сервером по бинарным соединениям. В кластере Tarantool экземпляр может выступать как в роли сервера, принимающего подключения от других экземпляров, так и в роли клиента, подключающегося к другим экземплярам.

Параметр <uri>.params.transport принимает одно из следующих значений:

  • plain (по умолчанию): отключить шифрование трафика.
  • ssl: шифровать трафик с использованием протокола TLS 1.2 (только для Enterprise Edition).

Пример

В приведенном ниже примере показано, как включить шифрование трафика с использованием самоподписанного сертификата сервера. Для каждого экземпляра заданы следующие параметры:

  • ssl_cert_file: путь к файлу SSL-сертификата.
  • ssl_key_file: путь к файлу закрытого SSL-ключа.
replicaset001:

Пример на GitHub: ssl_without_ca

Тип: string

Значение по умолчанию: 'plain'

Переменные окружения: TT_IPROTO_ADVERTISE_PEER_PARAMS_TRANSPORT, TT_IPROTO_ADVERTISE_SHARDING_PARAMS_TRANSPORT

.params.ssl_ca_file

(Необязательный) Путь к файлу доверенных центров сертификации (CA). Если не задан, подлинность узла не проверяется.

Параметр ssl_ca_file может использоваться как на стороне сервера, так и на стороне клиента:

  • На стороне сервера – сервер проверяет клиента.
  • На стороне клиента – клиент проверяет сервер.
  • При наличии файлов CA на обеих сторонах сервер и клиент проверяют друг друга.

См. также: .params.transport.

Тип: string

Значение по умолчанию: nil

Переменные окружения: TT_IPROTO_ADVERTISE_PEER_PARAMS_SSL_CA_FILE, TT_IPROTO_ADVERTISE_SHARDING_PARAMS_SSL_CA_FILE

.params.ssl_cert_file

Путь к файлу SSL-сертификата:

  • Для сервера – обязателен.
  • Для клиента – обязателен, если для сервера задан параметр ssl_ca_file; в противном случае – необязателен.

См. также: .params.transport.

Тип: string

Значение по умолчанию: nil

Переменные окружения: TT_IPROTO_ADVERTISE_PEER_PARAMS_SSL_CERT_FILE, TT_IPROTO_ADVERTISE_SHARDING_PARAMS_SSL_CERT_FILE

.params.ssl_ciphers

(Необязательный) Разделенный двоеточиями (:) список наборов шифров SSL, которые могут использоваться для соединения. Обратите внимание, что список не проверяется на корректность: если набор шифров неизвестен, Tarantool игнорирует его, не устанавливает соединение и записывает в журнал, что не найден общий набор шифров.

Поддерживаемые наборы шифров:

  • ECDHE-ECDSA-AES256-GCM-SHA384
  • ECDHE-RSA-AES256-GCM-SHA384
  • DHE-RSA-AES256-GCM-SHA384
  • ECDHE-ECDSA-CHACHA20-POLY1305
  • ECDHE-RSA-CHACHA20-POLY1305
  • DHE-RSA-CHACHA20-POLY1305
  • ECDHE-ECDSA-AES128-GCM-SHA256
  • ECDHE-RSA-AES128-GCM-SHA256
  • DHE-RSA-AES128-GCM-SHA256
  • ECDHE-ECDSA-AES256-SHA384
  • ECDHE-RSA-AES256-SHA384
  • DHE-RSA-AES256-SHA256
  • ECDHE-ECDSA-AES128-SHA256
  • ECDHE-RSA-AES128-SHA256
  • DHE-RSA-AES128-SHA256
  • ECDHE-ECDSA-AES256-SHA
  • ECDHE-RSA-AES256-SHA
  • DHE-RSA-AES256-SHA
  • ECDHE-ECDSA-AES128-SHA
  • ECDHE-RSA-AES128-SHA
  • DHE-RSA-AES128-SHA
  • AES256-GCM-SHA384
  • AES128-GCM-SHA256
  • AES256-SHA256
  • AES128-SHA256
  • AES256-SHA
  • AES128-SHA
  • GOST2012-GOST8912-GOST8912
  • GOST2001-GOST89-GOST89

Подробную информацию о шифрах SSL и их синтаксисе см. в документации OpenSSL.

См. также: .params.transport.

Тип: string

Значение по умолчанию: nil

Переменные окружения: TT_IPROTO_ADVERTISE_PEER_PARAMS_SSL_CIPHERS, TT_IPROTO_ADVERTISE_SHARDING_PARAMS_SSL_CIPHERS

.params.ssl_key_file

Путь к файлу закрытого SSL-ключа:

  • Для сервера – обязателен.
  • Для клиента – обязателен, если для сервера задан параметр ssl_ca_file; в противном случае – необязателен.

Если закрытый ключ зашифрован, укажите пароль к нему в параметре ssl_password или ssl_password_file.

См. также: .params.transport.

Тип: string

Значение по умолчанию: nil

Переменные окружения: TT_IPROTO_ADVERTISE_PEER_PARAMS_SSL_KEY_FILE, TT_IPROTO_ADVERTISE_SHARDING_PARAMS_SSL_KEY_FILE

.params.ssl_password

(Необязательный) Пароль для зашифрованного закрытого SSL-ключа, заданного с помощью ssl_key_file. Также пароль можно задать в ssl_password_file.

Параметры ssl_password и ssl_password_file применяются в следующем порядке:

  1. Если задан ssl_password, Tarantool пытается расшифровать закрытый ключ с его помощью.
  2. Если ssl_password неверный или не задан, Tarantool по очереди проверяет все пароли из ssl_password_file в порядке их следования.
  3. Если ssl_password и все пароли из ssl_password_file неверны или ни один из них не задан, Tarantool считает закрытый ключ незашифрованным.

См. также: .params.transport.

Тип: string

Значение по умолчанию: nil

Переменные окружения: TT_IPROTO_ADVERTISE_PEER_PARAMS_SSL_PASSWORD, TT_IPROTO_ADVERTISE_SHARDING_PARAMS_SSL_PASSWORD

.params.ssl_password_file

(Необязательный) Текстовый файл с одним или несколькими паролями для зашифрованных закрытых SSL-ключей, заданных с помощью ssl_key_file (по одному на каждой строке). Также пароль можно задать в ssl_password.

См. также: .params.transport.

Тип: string

Значение по умолчанию: nil

Переменные окружения: TT_IPROTO_ADVERTISE_PEER_PARAMS_SSL_PASSWORD_FILE, TT_IPROTO_ADVERTISE_SHARDING_PARAMS_SSL_PASSWORD_FILE

groups

В секции groups можно определить полную топологию кластера Tarantool.

groups.<group_name>

Имя группы.

К именам групп применяются следующие правила:

  • Максимальное количество символов – 63.
  • Должно начинаться с буквы.
  • Может содержать строчные буквы (a-z).
  • Может содержать цифры (0-9).
  • Может содержать следующие символы: -, _.

groups.<group_name>.replicasets

Наборы реплик, входящие в эту группу. См. replicasets.

groups.<group_name>.<config_parameter>

Любой параметр конфигурации, который можно определить в области видимости группы. Например, параметры конфигурации iproto и database, заданные на уровне группы, применяются ко всем экземплярам в этой группе.

replicasets

replicasets.<replicaset_name>

Имя набора реплик.

Правила для имен наборов реплик такие же, как для групп. Подробнее см. groups.<group_name>.

replicasets.<replicaset_name>.leader

Лидер набора реплик. С помощью этого параметра можно задать лидера набора реплик при использовании manual replication.failover.

Для выполнения контролируемого переключения параметр <replicaset_name>.leader можно временно удалить или задать значение null.

Пример

replication:  failover: manualgroups:  group001:    replicasets:      replicaset001:        leader: instance001        instances:          instance001:            iproto:              listen:              - uri: '127.0.0.1:3301'          instance002:            iproto:              listen:              - uri: '127.0.0.1:3302'          instance003:            iproto:              listen:              - uri: '127.0.0.1:3303'

replicasets.<replicaset_name>.bootstrap_leader

Лидер начальной загрузки для набора реплик. Чтобы указать лидера начальной загрузки вручную, задайте значение config для параметра replication.bootstrap_strategy.

Пример

groups:  group001:    replicasets:      replicaset001:        replication:          bootstrap_strategy: config        bootstrap_leader: instance001        instances:          instance001:            iproto:              listen:              - uri: '127.0.0.1:3301'          instance002:            iproto:              listen:              - uri: '127.0.0.1:3302'          instance003:            iproto:              listen:              - uri: '127.0.0.1:3303'

replicasets.<replicaset_name>.instances

Экземпляры, входящие в этот набор реплик. См. instances.

replicasets.<replicaset_name>.<config_parameter>

Любой параметр конфигурации, который можно определить в области видимости набора реплик. Например, параметры конфигурации iproto и database, заданные на уровне набора реплик, применяются ко всем экземплярам в этом наборе реплик.

instances

instances.<instance_name>

Имя экземпляра.

Обратите внимание, что правила для имени экземпляра те же, что и для групп. Подробнее см. groups.<group_name>.

instances.<instance_name>.<config_parameter>

Любой параметр конфигурации, который можно определить в области видимости экземпляра. Например, параметры конфигурации iproto и database, заданные на уровне экземпляра, применяются только к этому экземпляру.

изолированный режим –––

Начиная с версии 3.3.0, в конфигурацию экземпляра добавлен новый параметр isolated.

Параметр принимает логические значения, по умолчанию – false. Значение isolated: true переводит экземпляр, к которому оно применено, в изолированный режим.

Изолированный режим предназначен для временной изоляции экземпляра и выполнения работ по обслуживанию.

В изолированном режиме:

  • Экземпляр переводится в режим чтения
  • iproto прекращает прослушивание новых соединений
  • iproto разрывает все текущие соединения
  • Экземпляр отключается от всех источников репликации
  • Другие участники набора реплик исключают изолированный экземпляр из источников репликации

Пример

Ниже показано, как изолировать экземпляр:

groups:  g:    replicasets:      r:        instances:          i-001: {}          i-002: {}          i-003: {}          i-004:            isolated: true

labels

В разделе labels можно добавлять пользовательские атрибуты в конфигурацию. Атрибуты должны представлять собой пары key: value со строковыми ключами и значениями.

labels.<label_name>

Значение метки с указанным именем.

Пример

В примере ниже показано, как задать метки на уровнях набора реплик и экземпляра:

labels:  dc: 'east'  production: 'false'

См. также: configuration_labels

log

Раздел log определяет параметры конфигурации, связанные с логированием. Для работы с логированием в приложении используйте модуль log.

log.to

Определяет место, куда Tarantool отправляет логи. Этот параметр принимает следующие значения:

  • stderr: запись логов в стандартный поток вывода ошибок.
  • file: запись логов в файл (см. log.file).
  • pipe: запуск программы и запись логов в её стандартный ввод (см. log.pipe).
  • syslog: запись логов в системный журнал (см. log.syslog.*).

Тип: string

Значение по умолчанию: 'stderr'

Переменная окружения: TT_LOG_TO

log.file

Указывает файл для записи логов. Чтобы записывать логи в файл, задайте параметру log.to значение file. В противном случае log.file игнорируется.

Пример

В примере ниже показано, как записывать логи в файл, расположенный в указанном каталоге:

log:  to: file  file: var/log/{{ instance_name }}/instance.log

Пример на GitHub: log_file

Тип: string

Значение по умолчанию: 'var/log/{{ instance_name }}/tarantool.log'

Переменная окружения: TT_LOG_FILE

log.format

Указывает формат записи лога. Поддерживаются следующие форматы:

  • plain: запись лога форматируется как простой текст. Пример:

    2024-04-09 11:00:10.369 [12089] main/104/interactive I> log level 5 (INFO)
  • json: запись лога форматируется как JSON и включает дополнительные поля. Пример:

    {  "time": "2024-04-09T11:00:57.174+0300",  "level": "INFO",  "message": "log level 5 (INFO)",  "pid": 12160,  "cord_name": "main",  "fiber_id": 104,  "fiber_name": "interactive",  "file": "src/main.cc",  "line": 498}

Тип: string

Значение по умолчанию: 'plain'

Переменная окружения: TT_LOG_FORMAT

log.level

Указывает уровень детализации логов. Предусмотрены следующие уровни:

  • 0 – fatal
  • 1 – syserror
  • 2 – error
  • 3 – crit
  • 4 – warn
  • 5 – info
  • 6 – verbose
  • 7 – debug

Задавая log.level, можно включить логирование всех событий с уровнем важности выше или равным указанному.

Пример

В примере ниже показано, как логировать все события с уровнем важности VERBOSE и выше.

log:  level: 'verbose'

Пример на GitHub: log_level

Тип: number, string

Значение по умолчанию: 5

Переменная окружения: TT_LOG_LEVEL

log.modules

Настройка указанных уровней логирования (log.level) для различных модулей.

Уровень логирования можно задать для следующих типов модулей:

Пример 1: Настройка уровней логирования для файлов, использующих логгер по умолчанию

Предположим, есть два одинаковых модуля, расположенных по следующим путям: test/module1.lua и test/module2.lua. Эти модули используют логгер по умолчанию и выглядят следующим образом:

return {    say_hello = function()        local log = require('log')        log.info('Info message from module1')    end}

Для настройки уровней логирования необходимо указать имена модулей, соответствующие путям к этим модулям:

log:  modules:    test.module1: 'verbose'    test.module2: 'error'app:  file: 'app.lua'

Чтобы загрузить эти модули в приложении (app.lua), необходимо добавить соответствующие директивы require:

Поскольку для module1 задан уровень логирования verbose, а для module2error, вызов module1.say_hello() выведет сообщение, а module2.say_hello() будет подавлен:

Пример на GitHub: log_existing_modules

Пример 2: Настройка уровней логирования для модулей, использующих пользовательские логгеры

В этом примере показано, как задать уровень verbose для module1 и уровень error для module2:

log:  modules:    module1: 'verbose'    module2: 'error'app:  file: 'app.lua'

Для создания пользовательских логгеров в приложении (app.lua) вызовите функцию log.new():

Поскольку для module1 задан уровень логирования verbose, а для module2error, вызов module1_log.info() выведет сообщение, а module2_log.info() будет подавлен:

Пример на GitHub: log_new_modules

Пример 3: Настройка уровня логирования для модулей на C

В этом примере показано, как задать уровень info для модуля tarantool:

log:  modules:    tarantool: 'info'app:  file: 'app.lua'

Указанный уровень влияет на сообщения, записываемые из модулей на C:

ffi = require('ffi')-- Prints 'info' messages --ffi.C._say(ffi.C.S_INFO, nil, 0, nil, 'Info message from C module')--[[[6024] main/103/interactive I> Info message from C module---...--]]-- Swallows 'debug' messages --ffi.C._say(ffi.C.S_DEBUG, nil, 0, nil, 'Debug message from C module')--[[---...--]]

В примере выше используется библиотека LuaJIT ffi для вызова функций на C, предоставляемых модулем say.

Пример на GitHub: log_existing_c_modules

Тип: map

Значение по умолчанию: [box.NULL](../../reference_lua/box/box_null#box-null)

Переменная окружения: TT_LOG_MODULES

log.nonblock

Определяет поведение при логировании, если система не готова к записи. Если установлено значение true, Tarantool не блокируется при логировании, если система недоступна для записи, и вместо этого выводит сообщение. Использование этого значения может повысить производительность логирования ценой потери некоторых сообщений лога.

Тип: boolean

Значение по умолчанию: false

Переменная окружения: TT_LOG_NONBLOCK

log.pipe

Запускает программу и записывает логи в её стандартный ввод (stdin). Чтобы отправлять логи в стандартный ввод программы, задайте параметру log.to значение pipe.

Пример

В примере ниже Tarantool записывает логи в стандартный ввод программы cronolog:

log:  to: pipe  pipe: 'cronolog tarantool.log'

Пример на GitHub: log_pipe

Тип: string

Значение по умолчанию: [box.NULL](../../reference_lua/box/box_null#box-null)

Переменная окружения: TT_LOG_PIPE

log.syslog.*

log.syslog.facility

Указывает средство syslog (facility), используемое при включенном syslog. Чтобы записывать логи в syslog, задайте параметру log.to значение syslog.

Тип: string

Возможные значения: 'auth', 'authpriv', 'cron', 'daemon', 'ftp', 'kern', 'lpr', 'mail', 'news', 'security', 'syslog', 'user', 'uucp', 'local0', 'local1', 'local2', 'local3', 'local4', 'local5', 'local6', 'local7' Значение по умолчанию: 'local7'

Переменная окружения: TT_LOG_SYSLOG_FACILITY

log.syslog.identity

Указывает имя приложения, используемое для идентификации сообщений Tarantool в логах syslog. Чтобы записывать логи в syslog, задайте параметру log.to значение syslog.

Тип: string

Значение по умолчанию: 'tarantool'

Переменная окружения: TT_LOG_SYSLOG_IDENTITY

log.syslog.server

Указывает расположение сервера syslog. Этот параметр принимает одно из следующих значений:

  • IPv4-адрес. Пример: 127.0.0.1:514.
  • Путь к Unix-сокету, начинающийся с unix:. Примеры: unix:/dev/log на Linux или unix:/var/run/syslog на macOS.

Чтобы записывать логи в syslog, задайте параметру log.to значение syslog.

Пример

В примере ниже Tarantool записывает логи на сервер syslog, ожидающий сообщения логирования на адресе 127.0.0.1:514:

log:  to: syslog  syslog:    server: '127.0.0.1:514'

Пример на GitHub: log_syslog

Тип: string

Значение по умолчанию: box.NULL

Переменная окружения: TT_LOG_SYSLOG_SERVER

lua

Раздел lua описывает параметры конфигурации, относящиеся к среде Lua в Tarantool.

lua.memory

Задает максимальный объем памяти, доступный для Lua-скриптов, в байтах.

Если указанное значение превышает текущее использование памяти, новый лимит вступает в силу немедленно без перезапуска. Однако если указанное значение меньше текущего использования памяти, для применения изменения требуется перезапуск экземпляра.

Пример установки лимита памяти Lua в 4 ГБ:

lua:    memory: 4294967296

Тип: integer

Значение по умолчанию: 2147483648 (2 ГБ)

Переменная окружения: TT_LUA_MEMORY

memtx

Раздел memtx используется для настройки параметров, связанных с механизмом memtx.

memtx.allocator

Указывает аллокатор, управляющий памятью для кортежей memtx. Возможные значения:

  • system – память выделяется по мере необходимости с проверкой, что квота не превышена. Аллокатор основан на функции malloc.
  • smallslab-аллокатор. Аллокатор многократно использует блок памяти для размещения объектов одного типа. Обратите внимание, что этот аллокатор подвержен неисправимой фрагментации при определенных нагрузках, поэтому в таких случаях можно переключиться на system.

Тип: string

Значение по умолчанию: 'small'

Переменная окружения: TT_MEMTX_ALLOCATOR

memtx.max_tuple_size

Размер наибольшей единицы выделения памяти для механизма хранения memtx в байтах. Значение может быть увеличено, если необходимо хранить большие кортежи.

Тип: integer

Значение по умолчанию: 1048576

Переменная окружения: TT_MEMTX_MAX_TUPLE_SIZE

memtx.memory

Объем памяти в байтах, выделяемый Tarantool для хранения кортежей. При достижении лимита запросы INSERT и UPDATE завершаются с ошибкой ER_MEMORY_ISSUE. Сервер не выходит за пределы лимита memtx.memory при выделении памяти под кортежи, однако дополнительная память используется для хранения индексов и информации о соединениях.

Пример

В примере ниже размер памяти установлен равным 1 ГБ (1073741824 байт).

memtx:  memory: 1073741824

Тип: integer

Значение по умолчанию: 268435456

Переменная окружения: TT_MEMTX_MEMORY

memtx.min_tuple_size

Размер наименьшей единицы выделения памяти в байтах. Значение может быть уменьшено, если большинство кортежей очень маленькие.

Тип: integer

Значение по умолчанию: 16

Возможные значения: от 8 до 1048280 включительно

Переменная окружения: TT_MEMTX_MIN_TUPLE_SIZE

memtx.slab_alloc_factor

Множитель для вычисления размеров блоков памяти, в которых хранятся кортежи. Меньшее значение может привести к меньшим потерям памяти в зависимости от общего объема доступной памяти и распределения размеров элементов.

См. также: memtx.slab_alloc_granularity

Тип: number

Значение по умолчанию: 1.05

Возможные значения: от 1 до 2 включительно

Переменная окружения: TT_MEMTX_SLAB_ALLOC_FACTOR

memtx.slab_alloc_granularity

Указывает гранулярность выделения памяти в байтах в small-аллокаторе. Значение memtx.slab_alloc_granularity должно соответствовать следующим условиям:

  • Значение является степенью двойки.
  • Значение больше или равно 4.

Ниже приведены несколько рекомендаций по настройке параметра memtx.slab_alloc_granularity:

  • Если кортежи в спейсе маленькие и имеют примерно одинаковый размер, установите значение параметра равным 4 байтам для экономии памяти.
  • Если кортежи имеют разные размеры, увеличьте значение параметра, чтобы выделять кортежи из одного mempool (пула памяти).

См. также: memtx.slab_alloc_factor

Тип: integer

Значение по умолчанию: 8

Переменная окружения: TT_MEMTX_SLAB_ALLOC_GRANULARITY

memtx.sort_threads

Количество потоков из пула потоков, используемых для сортировки ключей вторичных индексов при загрузке базы данных memtx. Минимальное значение – 1, максимальное значение – 256. По умолчанию используются все доступные ядра.

Тип: integer

Значение по умолчанию: box.NULL

Переменная окружения: TT_MEMTX_SORT_THREADS

metrics

Раздел metrics определяет параметры конфигурации для метрик.

metrics.exclude

Массив, содержащий метрики, которые нужно отключить. Массив может содержать те же значения, что и параметр конфигурации exclude, передаваемый в metrics.cfg().

Пример

metrics:  include: [ all ]  exclude: [ vinyl ]  labels:    alias: '{{ instance_name }}'

Тип: массив

По умолчанию: ````

Переменная окружения: TT_METRICS_EXCLUDE

metrics.include

Массив, содержащий метрики, которые нужно включить. Массив может содержать те же значения, что и параметр конфигурации include, передаваемый в metrics.cfg().

Тип: массив

По умолчанию: [ all ]

Переменная окружения: TT_METRICS_INCLUDE

metrics.labels

Глобальные метки, добавляемые к каждому наблюдению.

Тип: map

По умолчанию: { alias = names.instance_name }

Переменная окружения: TT_METRICS_LABELS

process

Секция process определяет параметры конфигурации процесса Tarantool в системе.

process.background

Запуск сервера в качестве демона.

Если для этого параметра установлено значение true, расположение журнала Tarantool, заданное параметром log.to, должно быть установлено в file, pipe или syslog --- любое значение, кроме stderr (по умолчанию), так как процесс-демон отсоединяется от терминала и не может писать в stderr терминала.

Тип: boolean

По умолчанию: false

Переменная окружения: TT_PROCESS_BACKGROUND

process.coredump

Создание файлов core dump.

Обычно администратору необходимо выполнить ulimit -c unlimited (или задать соответствующие параметры в unit-файле systemd) перед запуском процесса Tarantool для получения core dump. Если параметр process.coredump включен, Tarantool устанавливает соответствующее ограничение ресурса самостоятельно, и администратору не нужно выполнять ulimit -c unlimited (см. man 3 setrlimit).

Этот параметр также устанавливает состояние атрибута dumpable, который включен по умолчанию, но может быть сброшен при определённых обстоятельствах (согласно man 2 prctl, см. PR_SET_DUMPABLE).

Тип: boolean

По умолчанию: false

Переменная окружения: TT_PROCESS_COREDUMP

process.title

Добавление указанной строки к заголовку процесса сервера (отображается в колонке COMMAND для команд Linux ps -ef и top -c).

Например, если задать для параметра значение myservice - {{ instance_name }}:

process:  title: myservice - {{ instance_name }}

Команда ps -ef может показать процесс сервера Tarantool следующим образом:

$ ps -ef | grep tarantool503      68100 68098  0 10:33 pts/2    00:00.10 tarantool <running>: myservice instance1

Тип: string

По умолчанию: 'tarantool - {{ instance_name }}'

Переменная окружения: TT_PROCESS_TITLE

process.pid_file

Сохранение идентификатора процесса в указанном файле.

Этот параметр может содержать относительный путь к файлу. В этом случае он интерпретируется относительно process.work_dir.

Тип: string

По умолчанию: 'var/run/{{ instance_name }}/tarantool.pid'

Переменная окружения: TT_PROCESS_PID_FILE

process.strip_core

Определяет, должны ли файлы core dump исключать память, выделенную для кортежей, --- эта память может быть большой при высокой нагрузке на Tarantool. Значение true означает «не включать».

Тип: boolean

По умолчанию: true

Переменная окружения: TT_PROCESS_STRIP_CORE

process.username

Имя системного пользователя, на которого переключается процесс после запуска.

Тип: string

По умолчанию: box.NULL

Переменная окружения: TT_PROCESS_USERNAME

process.work_dir

Каталог для хранения рабочих файлов Tarantool (файлов базы данных, журналов, PID-файла, Unix-сокета консоли и других файлов, если приложение создаёт их в текущем каталоге). Экземпляр сервера переключается в process.work_dir с помощью chdir(2) после запуска.

Если задан как относительный путь, он отсчитывается от текущего рабочего каталога, из которого запускается Tarantool. Если не указан, используется текущий рабочий каталог.

Другие параметры каталогов и файлов, если они заданы как относительные пути, интерпретируются относительно process.work_dir, например, каталоги для хранения снапшотов и журналов предзаписи.

Тип: string

По умолчанию: box.NULL

Переменная окружения: TT_PROCESS_WORK_DIR

replication

Раздел replication определяет параметры конфигурации, связанные с репликацией.

replication.anon

Определяет, будет ли текущий экземпляр работать как анонимная реплика. Анонимные реплики доступны только для чтения и могут использоваться, например, для резервного копирования.

Чтобы указанный экземпляр работал как анонимная реплика, задайте параметру replication.anon значение true:

instance003:  replication:    anon: true

Полный пример доступен на GitHub: anonymous_replica.

Анонимные реплики не отображаются в разделе box.info.replication. Проверить их статус можно с помощью box.info.replication_anon().

Хотя анонимные реплики доступны только для чтения, записывать данные можно в локальные для репликации и временные спейсы (созданные с is_local = true и temporary = true соответственно). Поскольку изменения в локальных для репликации спейсах разрешены, анонимная реплика может увеличить компонент 0 значения vclock.

Ниже приведены ограничения при наличии анонимных реплик в наборе реплик:

  • Набор реплик должен содержать как минимум один неанонимный экземпляр.
  • Анонимную реплику нельзя настроить как экземпляр для записи, задав параметру database.mode значение rw или сделав ее лидером с помощью replicasets.<replicaset_name>.leader.
  • Если для параметра replication.failover задано значение election, для анонимной реплики можно задать только значение off для параметра replication.election_mode.
  • Если для параметра replication.failover задано значение supervised, внешний координатор отказоустойчивости не учитывает анонимные реплики при выборе лидера для начальной загрузки или набора реплик.

Тип: boolean

Значение по умолчанию: false

Переменная окружения: TT_REPLICATION_ANON

replication.autoexpel

Начиная с: 3.3.0

Параметр replication.autoexpel предназначен для управления динамическими кластерами с использованием конфигураций на основе YAML. Он включает автоматическое исключение экземпляров, удаленных из конфигурации YAML.

К исключению рассматриваются только экземпляры с именами, соответствующими заданному префиксу; все остальные исключаются из рассмотрения. Кроме того, экземпляры без постоянного имени игнорируются.

Если экземпляр находится в режиме чтения-записи и имеет последнюю версию схемы базы данных, он инициирует исключение экземпляров, которые:

  • Соответствуют заданному префиксу
  • Отсутствуют в обновленной конфигурации YAML

Процесс исключения следует стандартной процедуре, включающей удаление экземпляра из системного спейса _cluster.

Логика autoexpel активируется при определенных событиях:

  • Запуск. При запуске кластера autoexpel проверяет и удаляет экземпляры, не соответствующие обновленной конфигурации.
  • Переконфигурация. При перезагрузке конфигурации YAML autoexpel сравнивает текущее состояние с обновленной конфигурацией и выполняет необходимые исключения.
  • Событие ``box.status`` watcher. Изменения, обнаруженные наблюдателем (watcher) box.status, также запускают механизм autoexpel.

autoexpel не выполняет никаких действий над новыми присоединившимися экземплярами, пока не произойдет одно из инициирующих событий. Это означает, что экземпляр, соответствующий критерию autoexpel, может присоединиться к кластеру, но может быть удален позже во время переконфигурации или при последующих инициирующих событиях.

Поля конфигурации

  • by (строка, по умолчанию: nil): задает критерий autoexpel. В настоящее время поддерживается только prefix, и его необходимо задавать явно.
  • enabled (логическое значение, по умолчанию: false): включает или отключает логику autoexpel.
  • prefix (строка, по умолчанию: nil): определяет шаблон для имен экземпляров, которые считаются частью кластера.

replication.autoexpel_by.*

Назначение replication.autoexpel_by --- определить критерий, используемый для определения того, какие экземпляры в кластере подлежат процессу autoexpel.

Поле by помогает различать:

  • Экземпляры, которые являются частью кластера и должны соответствовать конфигурации YAML.
  • Экземпляры или инструменты (например, инструменты CDC), которые используют канал репликации, но не являются частью конфигурации кластера.

Значение by по умолчанию – nil, это означает, что критерий autoexpel не применяется, если не задан явно.

В настоящее время единственное поддерживаемое значение для byprefix. Значение prefix указывает системе идентифицировать экземпляры по их именам, сопоставляя их с шаблоном префикса, заданным в конфигурации.

Если функция autoexpel включена (enabled: true), полю by необходимо явно задать значение prefix.

Отсутствие этого поля или использование неподдерживаемого значения приведет к ошибкам конфигурации.

replication:  autoexpel:    enabled: true    by: prefix    prefix: '{{ replicaset_name }}'

Тип: string

Значение по умолчанию: nil

Переменная окружения: TT_REPLICATION_AUTOEXPEL_BY

replication.autoexpel_enabled.*

Поле replication.autoexpel_enabled --- это логический параметр конфигурации, определяющий, активна ли логика autoexpel для кластера.

: Эта функция предназначена для автоматического управления динамическими конфигурациями кластера путем удаления экземпляров, которые больше не присутствуют в конфигурации YAML.

replication.autoexpel_prefix.*

Поле prefix фильтрует экземпляры для исключения, различая экземпляры кластера (из конфигурации YAML) и внешние сервисы (например, инструменты CDC). Рассматриваются только экземпляры, соответствующие префиксу.

Единообразный шаблон именования гарантирует, что системный спейс _cluster будет автоматически синхронизироваться с конфигурацией YAML.

Если поле prefix не задано (nil), логика autoexpel не сможет идентифицировать экземпляры для исключения, и функция не будет работать.

: Это поле обязательно, если для параметра replication.autoexpel_enabled задано значение true.

Как это работает:

  1. Префикс фильтрует имена экземпляров (например, {{ replicaset_name }} для имен, специфичных для набора реплик, или i- для имен, начинающихся с i-).
  2. Экземпляры, соответствующие префиксу и удаленные из конфигурации YAML, исключаются.

3. Безымянные экземпляры или те, что не соответствуют префиксу, игнорируются.

Динамический префикс на основе имени набора реплик:

replication:  autoexpel:    enabled: true    by: prefix    prefix: '{{ replicaset_name }}'

В этой конфигурации:

  • Экземпляры группируются по именам наборов реплик (например, r-001-i-001 для набора реплик r-001).

  • Префикс гарантирует, что при удалении из конфигурации автоматически исключаются только те экземпляры, имена которых соответствуют имени набора реплик.

    Статический префикс для сопоставления шаблонов:

    replication:  autoexpel:    enabled: true    by: prefix    prefix: 'i-'

    В этой конфигурации:

  • Все экземпляры с именами, начинающимися на i- (например, i-001, i-002), рассматриваются для исключения.

  • Это полезно, когда экземпляры следуют единой схеме именования.

Тип: string

Значение по умолчанию: nil

Переменная окружения: TT_REPLICATION_AUTOEXPEL_PREFIX

Полный пример autoexpel

Создайте файл `config.yaml` со следующим содержимым:
:   ``` yaml    credentials:      users:        guest:          roles: [super]    replication:      failover: manual      autoexpel:        enabled: true        by: prefix        prefix: '{{ replicaset_name }}'    iproto:      listen:        - uri: 'unix/:./var/run/{{ instance_name }}.iproto'    groups:      g-001:        replicasets:          r-001:            leader: r-001-i-001            instances:              r-001-i-001: {}              r-001-i-002: {}              r-001-i-003: {}    ```    This configuration:    - Sets up authentication with a guest user assigned the super      role.    - Enables the `autoexpel` option to automatically expel      instances not present in the YAML file.    - Defines instance names based on a prefix pattern:      `{{ replicaset_name }}`.    - Lists three instances: `r-001-i-001`, `r-001-i-002`, and      `r-001-i-003`.    2.  Open terminal window and start three instances using the        following commands:    ``` lua    tarantool –name r-001-i-001 –config config.yaml -i    ```    ``` lua    tarantool –name r-001-i-002 –config config.yaml -i    ```    ``` lua    tarantool –name r-001-i-003 –config config.yaml -i    ```    3.  Edit `config.yaml` and remove the following entry for        `r-001-i-003`:    ``` lua    r-001-i-003: {}    ```    The updated `config.yaml` should look like this:    ``` yaml    groups:      g-001:        replicasets:          r-001:            leader: r-001-i-001            instances:              r-001-i-001: {}              r-001-i-002: {}    ```    Save the file.    4.  For the leader instance (`r-001-i-001`), check the        `_cluster` space:     hint    ::: title    Hint    The `_cluster` system space in Tarantool stores metadata about    all instances currently recognized as part of the cluster. It    shows which instances are registered and active.        You should see `r-001-i-003` still listed in the `_cluster`    system space.    5.  Reload the configuration:    ``` lua    config = require('config')    config:reload()    ```    6.  Verify the changes:    ``` lua    box.space._cluster:fselect()    ```    After the reload, `r-001-i-003` should no longer appear in the    `_cluster` system space.

replication.bootstrap_strategy

Задает стратегию, используемую для начальной загрузки набора реплик. Доступны следующие стратегии:

  • auto: узел не загружается, если не подключена половина или более других узлов в наборе реплик. Например, если набор реплик содержит 2 или 3 узла, узлу требуется 2 подключенных экземпляра. В случае 4 или 5 узлов требуется как минимум 3 подключенных экземпляра. Более того, лидер начальной загрузки не сможет загрузиться, если каждый подключенный узел не выбрал его лидером начальной загрузки.

  • config: для начальной загрузки набора реплик используется указанный узел. Чтобы указать лидера начальной загрузки, используйте параметр replicasets.<replicaset_name>.bootstrap_leader.

  • supervised: лидер начальной загрузки не выбирается автоматически, а должен быть назначен с помощью box.ctl.make_bootstrap_leader() на нужном узле. Управление лидером начальной загрузки является ответственностью пользователя, если только для параметра replication.failover не задано значение supervised. В этом случае управление лидером начальной загрузки осуществляет координатор отказоустойчивости.

  • native (начиная с 3.4.0): лидер начальной загрузки управляется на уровне конфигурации YAML синхронно с управлением режимом чтения/записи. С точки зрения пользователя эта стратегия похожа на auto: Tarantool или координатор отказоустойчивости выполняет начальную загрузку автоматически. Внутренне native основана на supervised, что позволяет избежать ограничений auto, таких как требование к подключаемой реплике подключиться ко всем экземплярам, зарегистрированным в системном спейсе _cluster.

    При инициализации набора реплик native использует box.ctl.make_bootstrap_leader({graceful . После начальной загрузки, когда экземпляр переключается в режим чтения-записи, native использует box.ctl.make_bootstrap_leader(), чтобы запись о лидере начальной загрузки указывала на текущий экземпляр с доступом на запись. Экземпляр, выбранный для инициализации набора реплик, зависит от replication.failover:

    • off: первый экземпляр с доступом на запись в лексикографическом порядке.
    • manual: экземпляр, настроенный как лидер набора реплик.
    • election: первый неанонимный кандидат в лексикографическом порядке.
    • supervised: координатор отказоустойчивости выбирает лидера начальной загрузки.
  • legacy (устарело с 2.11.0): узлу требуется подключение replication_connect_quorum числа других узлов. Этот параметр добавлен для сохранения совместимости с текущими версиями Cartridge и может быть удален в будущем.

Тип: string

Значение по умолчанию: auto

Переменная окружения: TT_REPLICATION_BOOTSTRAP_STRATEGY

replication.connect_timeout

Время ожидания (в секундах), в течение которого реплика ожидает подключения к мастеру в кластере. Подробнее см. в разделе статус orphan.

Этот параметр отличается от replication.timeout, который используется мастером для отключения реплики, если мастер не получает подтверждений сообщений heartbeat.

Тип: number

Значение по умолчанию: 30

Переменная окружения: TT_REPLICATION_CONNECT_TIMEOUT

replication.election_mode

Роль узла набора реплик в процессе выбора лидера.

Возможные значения:

  • off: узел не участвует в выборах.
  • voter: узел может участвовать в процессе выборов, но не может быть лидером.
  • candidate: узел может стать лидером.
  • manual: позволяет явно контролировать, какой экземпляр является лидером, вместо полагания на автоматический выбор лидера. По умолчанию экземпляр действует как избиратель (voter) --- он доступен только для чтения и может голосовать за другие экземпляры-кандидаты. Как только вызывается box.ctl.promote(), экземпляр становится кандидатом и начинает новый раунд выборов. Если экземпляр выигрывает выборы, он становится лидером, но не будет участвовать в новых выборах.

Тип: string

Значение по умолчанию: [box.NULL](../../reference_lua/box/box_null#box-null) (фактическое значение по умолчанию зависит от replication.failover) Переменная окружения: TT_REPLICATION_ELECTION_MODE

replication.election_timeout

Задает время ожидания (в секундах) между раундами выборов в процессе выбора лидера, если предыдущий раунд завершился разделением голосов.

Это значение довольно велико, и в большинстве случаев его можно снизить до 300-400 мс.

Чтобы избежать повторного разделения голосов, время ожидания на каждом узле рандомизируется при каждом новом голосовании от 100% до 110% от исходного значения времени ожидания. Например, если время ожидания составляет 300 мс и 3 узла начинают выборы одновременно в одном и том же термине, они могут установить время ожидания выборов равным 300, 310 и 320 соответственно, или 305, 302 и 324 и так далее. Таким образом, голоса никогда не будут разделены, так как выборы на разных узлах не будут перезапущены одновременно.

Тип: number

Значение по умолчанию: 5

Переменная окружения: TT_REPLICATION_ELECTION_TIMEOUT

replication.election_fencing_mode

Задает режим ограждения лидера, который влияет на процесс выборов лидера. Если для параметра задано значение soft или strict, лидер слагает с себя полномочия, если у него меньше replication.synchro_quorum активных подключений к узлам кластера. Слагающий с себя полномочия лидер получает статус ведомого (follower) в текущем терме выборов и переходит в режим только для чтения.

  • В режиме soft соединение считается неработающим, если нет ответов в течение 4 * replication.timeout секунд как от текущего лидера, так и от ведомых.
  • В режиме strict соединение считается неработающим, если нет ответов в течение 2 * replication.timeout секунд от текущего лидера и 4 * replication.timeout секунд от ведомых. Это повышает шансы того, что в любой момент времени будет только один лидер.

Ограждение применяется к экземплярам, для которых параметр replication.election_mode имеет значение candidate или manual. Чтобы отключить ограждение лидера, задайте для параметра election_fencing_mode значение off.

Тип: string

Значение по умолчанию: soft

Possible values: off`, `soft`, `strict

Переменная окружения: TT_REPLICATION_ELECTION_FENCING_MODE

replication.failover

Режим отказоустойчивости, используемый для перехвата роли мастера при сбое текущего мастер-экземпляра. Доступны следующие режимы:

  • off. Лидерство в наборе реплик управляется с помощью параметра database.mode. В этом случае можно задать параметру database.mode значение rw на всех экземплярах в наборе реплик для создания конфигурации мастер-мастер.

    Значение database.mode по умолчанию определяется следующим образом: rw, если в наборе реплик один экземпляр; ro, если экземпляров несколько.

  • manual. Лидерство в наборе реплик управляется с помощью параметра replicasets.<replicaset_name>.leader. В этом случае конфигурация мастер-мастер запрещена.

    В режиме manual параметр database.mode не может быть задан явно. Лидер настроен в режиме чтения-записи, все остальные экземпляры доступны только для чтения.

  • election. Для управления лидерством в наборе реплик используется автоматический выбор лидера.

    В режиме election параметры database.mode и replicasets.<replicaset_name>.leader не следует задавать явно.

  • supervised (только Enterprise Edition). Лидерство в наборе реплик управляется с помощью внешнего координатора отказоустойчивости.

    В режиме supervised параметры database.mode и replicasets.<replicaset_name>.leader не следует задавать явно.

См. также: Руководства по репликации

Пример

В приведенном ниже примере заданы следующие параметры конфигурации:

  • В разделе credentials создается пользователь replicator с ролью replication.
  • iproto.advertise.peer указывает, что другие экземпляры должны подключаться к адресу, заданному в iproto.listen, используя пользователя replicator.
  • replication.failover указывает, что мастер-экземпляр должен быть задан вручную.
  • replicasets.<replicaset_name>.leader назначает instance001 лидером набора реплик.
credentials:  users:    replicator:      password: 'topsecret'      roles: [replication]iproto:  advertise:    peer:      login: replicatorreplication:  failover: manualgroups:  group001:    replicasets:      replicaset001:        leader: instance001        instances:          instance001:            iproto:              listen:              - uri: '127.0.0.1:3301'          instance002:            iproto:              listen:              - uri: '127.0.0.1:3302'          instance003:            iproto:              listen:              - uri: '127.0.0.1:3303'

Тип: string

Значение по умолчанию: off

Переменная окружения: TT_REPLICATION_FAILOVER

replication.peers

URI экземпляров, составляющих набор реплик. Эти URI используются экземпляром для подключения к другому экземпляру в качестве реплики.

Кроме того, можно использовать iproto.advertise.peer, чтобы указать URI, используемый для информирования других членов кластера о текущем экземпляре.

Пример

В приведенном ниже примере заданы следующие параметры конфигурации:

  • В разделе credentials создается пользователь replicator с ролью replication.
  • replication.peers задает URI экземпляров набора реплик.
credentials:  users:    replicator:      password: 'topsecret'      roles: [replication]replication:  peers:  - replicator:topsecret@127.0.0.1:3301  - replicator:topsecret@127.0.0.1:3302  - replicator:topsecret@127.0.0.1:3303

Тип: array

Значение по умолчанию: [box.NULL](../../reference_lua/box/box_null#box-null)

Переменная окружения: TT_REPLICATION_PEERS

replication.skip_conflict

По умолчанию, если реплика добавляет уникальный ключ, который уже добавила другая реплика, репликация останавливается с ошибкой ER_TUPLE_FOUND. Если для параметра replication.skip_conflict задано значение true, такие ошибки игнорируются.

Тип: boolean

Значение по умолчанию: false

Переменная окружения: TT_REPLICATION_SKIP_CONFLICT

replication.sync_lag

Максимальная задержка (в секундах) между моментом записи данных на мастере и моментом их записи на реплике. Если для параметра replication.sync_lag задано значение nil или 365 * 100 * 86400 (TIMEOUT_INFINITY), реплика всегда считается «синхронизированной».

Тип: number

Значение по умолчанию: 10

Переменная окружения: TT_REPLICATION_SYNC_LAG

replication.sync_timeout

Время ожидания (в секундах), в течение которого узел ожидает синхронизации с другими узлами в наборе реплик после подключения или во время обновления конфигурации. Синхронизация может завершиться неудачей бесконечно, если значение replication.sync_lag меньше сетевой задержки или если реплика не успевает за обновлениями мастера. Если время ожидания replication.sync_timeout истекает, реплика переходит в статус orphan.

Тип: number

Значение по умолчанию: 0

Переменная окружения: TT_REPLICATION_SYNC_TIMEOUT

replication.synchro_queue_max_size

Начиная с: 3.3.0

Максимальный размер очереди синхронных транзакций на мастер-узле в байтах. Ограничение размера не является строгим, то есть если есть хотя бы один свободный байт, весь запрос на запись помещается в очередь без блокировки. Этот параметр гарантирует, что очередь не будет расти бесконечно, что потенциально может повлиять на производительность и использование ресурсов, и применяется только к мастер-узлу.

Значение 0 отключает ограничение.

Если синхронная очередь достигает заданного ограничения размера, новые транзакции, пытающиеся попасть в очередь, отбрасываются. В таких случаях система возвращает пользователю ошибку: The synchronous transaction queue is full.

Это ограничение размера не применяется во время процесса восстановления. Транзакции, обрабатываемые во время восстановления, не подвержены влиянию ограничения размера очереди.

Чтобы просмотреть текущий размер очереди синхронных транзакций, используйте следующую команду:

box.info.synchro.queue.size
undefined

tarantool> box.info.synchro

: ---

  • queue:

: owner: 1 size: 60 busy: false len: 1 term: 2 quorum: 2

Задайте ограничение размера очереди синхронных транзакций в конфигурационном файле:

replication:    synchro_queue_max_size: 33554432  # Limit set to 32 MB

Тип: integer

Значение по умолчанию: 16777216 (16 MB)

Переменная окружения: TT_REPLICATION_SYNCHRO_QUEUE_MAX_SIZE

replication.synchro_quorum

Количество реплик, которые должны подтвердить получение синхронной транзакции перед завершением ее фиксации.

Этот параметр поддерживает динамическое вычисление значения кворума. Например, значение по умолчанию --- N / 2 + 1, где N --- текущее количество реплик, зарегистрированных в кластере. При добавлении или удалении реплик выражение перевычисляется автоматически.

Обратите внимание, что значение по умолчанию (не менее 50% размера кластера + 1) гарантирует надежность данных. Использование значения меньше канонического может привести к непредвиденным результатам, включая split-brain.

replication.synchro_quorum не используется на репликах. При отказе мастера ожидающие синхронные транзакции на репликах будут находиться в ожидании, пока не будет выбран новый мастер.

Тип: string, number

Значение по умолчанию: N / 2 + 1

Переменная окружения: TT_REPLICATION_SYNCHRO_QUORUM

replication.synchro_timeout

Только для синхронной репликации. Задает время ожидания в секундах для достижения кворума синхронной транзакции, по истечении которого транзакция признается неудачной и откатывается.

Не используется на репликах, поэтому при отказе мастера ожидающие синхронные транзакции на репликах будут находиться в ожидании, пока не будет выбран новый мастер.

Тип: number

Значение по умолчанию: 5

Переменная окружения: TT_REPLICATION_SYNCHRO_TIMEOUT

replication.threads

Количество потоков, создаваемых для декодирования входящих данных репликации.

В большинстве случаев одного потока достаточно для всех входящих данных. Возможные значения --- от 1 до 1000. При наличии нескольких потоков репликации обслуживаемые подключения распределяются между потоками равномерно.

Тип: integer

Значение по умолчанию: 1

Переменная окружения: TT_REPLICATION_THREADS

replication.timeout

Интервал времени (в секундах), через который мастер отправляет запросы heartbeat реплике, если нет обновлений для отправки этой реплике. На каждый запрос реплика должна возвращать подтверждение heartbeat.

Если мастер или реплика не получает сообщение heartbeat в течение 4 * replication.timeout секунд, соединение разрывается, и реплика пытается переподключиться к мастеру.

См. также: Мониторинг набора реплик

Тип: number

Значение по умолчанию: 1

Переменная окружения: TT_REPLICATION_TIMEOUT

roles

В этом разделе описаны параметры конфигурации, связанные с ролями приложения.

roles

Указывает роли экземпляра. Чтобы задать конфигурацию роли, используйте параметр roles_cfg.

См. также: configuration_application_roles

Тип: array

Значение по умолчанию: nil

Переменная окружения: TT_ROLES

roles_cfg

Указывает конфигурацию роли. Этот параметр принимает имя роли в качестве ключа, а конфигурацию роли --- в качестве значения. Чтобы указать роли экземпляра, используйте параметр roles.

См. также: configuration_application_roles

Тип: map

Значение по умолчанию: nil

Переменная окружения: TT_ROLES_CFG

security

Раздел security определяет параметры конфигурации, связанные с различными настройками безопасности.

security.auth_delay

Задаёт период времени (в секундах), в течение которого конкретный пользователь должен ожидать перед следующей попыткой после неудачной аутентификации.

Параметр security.auth_retries задаёт количество попыток аутентификации, которые клиент может выполнить до применения security.auth_delay.

В приведённой ниже конфигурации клиент может выполнить до трёх попыток аутентификации с одним и тем же именем пользователя. При четвёртой попытке применяется задержка аутентификации, заданная параметром security.auth_delay. Это означает, что после первой неудачной попытки клиенту необходимо ожидать 10 секунд.

security:  auth_delay: 10  auth_retries: 2

Тип: number

Значение по умолчанию: 0

Переменная окружения: TT_SECURITY_AUTH_DELAY

security.auth_retries

Задаёт максимальное количество повторных попыток аутентификации до применения security.auth_delay. Значение по умолчанию --- 0, что означает применение security.auth_delay после первой неудачной попытки аутентификации.

Счётчик попыток сбрасывается по истечении security.auth_delay секунд с момента первой неудачной попытки. Например, если клиент пытается аутентифицироваться менее security.auth_retries раз в течение security.auth_delay секунд, задержка аутентификации не применяется. Счётчик попыток также сбрасывается после любой успешной попытки аутентификации.

Тип: integer

Значение по умолчанию: 0

Переменная окружения: TT_SECURITY_AUTH_RETRIES

security.auth_type

Задаёт протокол, используемый для аутентификации пользователей. Возможные значения:

  • chap-sha1: используется протокол CHAP с хешированием SHA-1 для паролей.
  • pap-sha256: используется аутентификация PAP с алгоритмом хеширования SHA256.

Обратите внимание, что CHAP хранит хеши паролей в спейсе _user без использования соли. Если злоумышленник получит доступ к базе данных, он может подобрать пароль, например, с использованием радужной таблицы. В случае PAP пароль солится уникальной для пользователя солью перед сохранением в базе данных, что защищает базу данных от подбора с использованием радужной таблицы.

Чтобы включить PAP, задайте параметр security.auth_type следующим образом:

security:  auth_type: 'pap-sha256'

Тип: string

Значение по умолчанию: 'chap-sha1'

Переменная окружения: TT_SECURITY_AUTH_TYPE

security.disable_guest

Если true, отключает доступ через удалённые подключения для неаутентифицированных пользователей или пользователей guest. Этот параметр влияет на соединения между членами кластера и подключения net.box.

Тип: boolean

Значение по умолчанию: false

Переменная окружения: TT_SECURITY_DISABLE_GUEST

security.password_enforce_digits

Если true, пароль должен содержать цифры (0-9).

Тип: boolean

Значение по умолчанию: false

Переменная окружения: TT_SECURITY_PASSWORD_ENFORCE_DIGITS

security.password_enforce_lowercase

Если true, пароль должен содержать строчные буквы (a-z).

Тип: boolean

Значение по умолчанию: false

Переменная окружения: TT_SECURITY_PASSWORD_ENFORCE_LOWERCASE

security.password_enforce_specialchars

Если true, пароль должен содержать хотя бы один специальный символ (например, &|?!@$).

Тип: boolean

Значение по умолчанию: false

Переменная окружения: TT_SECURITY_PASSWORD_ENFORCE_SPECIALCHARS

security.password_enforce_uppercase

Если true, пароль должен содержать заглавные буквы (A-Z).

Тип: boolean

Значение по умолчанию: false

Переменная окружения: TT_SECURITY_PASSWORD_ENFORCE_UPPERCASE

security.password_history_length

Задаёт количество уникальных новых паролей пользователя, прежде чем старый пароль может быть использован повторно.

Тип: integer

Значение по умолчанию: 0

Переменная окружения: TT_SECURITY_PASSWORD_HISTORY_LENGTH

security.password_lifetime_days

Задаёт максимальный период времени (в днях), в течение которого пользователь может использовать один и тот же пароль. По истечении этого периода при попытке входа пользователь получает ошибку «Password expired». Для восстановления доступа таких пользователей используйте box.schema.user.passwd.

Тип: integer

Значение по умолчанию: 0

Переменная окружения: TT_SECURITY_PASSWORD_LIFETIME_DAYS

security.password_min_length

Задаёт минимальное количество символов в пароле.

Тип: integer

Значение по умолчанию: 0

Переменная окружения: TT_SECURITY_PASSWORD_MIN_LENGTH

security.secure_erasing

Если true, Tarantool перезаписывает файл данных несколько раз перед удалением, чтобы сделать восстановление удалённого файла невозможным. Параметр применяется как к файлам .xlog и .snap, так и к файлам данных Vinyl.

Тип: boolean

Значение по умолчанию: false

Переменная окружения: TT_SECURITY_SECURE_ERASING

шардирование

Раздел sharding определяет параметры конфигурации, связанные с шардированием.

sharding.bucket_count

Общее количество бакетов в кластере. Подробнее см. vshard_config_bucket_count.

Пример

sharding:  bucket_count: 1000

Тип: integer

Значение по умолчанию: 3000

Переменная окружения: TT_SHARDING_BUCKET_COUNT

sharding.discovery_mode

Режим фоновой службы discovery, используемой роутером для поиска бакетов. Подробнее см. vshard.router.discovery_set().

Тип: string

Значение по умолчанию: 'on'

Possible values: 'on', 'off', 'once'

Переменная окружения: TT_SHARDING_DISCOVERY_MODE

sharding.failover_ping_timeout

Время ожидания (в секундах), по истечении которого узел считается недоступным при отсутствии ответов в течение этого периода. Для определения недоступности узла используется служба failover.

Тип: number

Значение по умолчанию: 5

Переменная окружения: TT_SHARDING_FAILOVER_PING_TIMEOUT

sharding.lock

Определяет, заблокирован ли набор реплик. Заблокированный набор реплик не может принимать новые бакеты и мигрировать собственные бакеты.

Тип: boolean

Значение по умолчанию: nil

Переменная окружения: TT_SHARDING_LOCK

sharding.rebalancer_disbalance_threshold

Максимальный порог дисбаланса бакетов (в процентах). Дисбаланс вычисляется для каждого набора реплик по следующей формуле:

|etalon_bucket_count - real_bucket_count| / etalon_bucket_count * 100

Тип: number

Значение по умолчанию: 1

Переменная окружения: TT_SHARDING_REBALANCER_DISBALANCE_THRESHOLD

sharding.rebalancer_max_receiving

Максимальное количество бакетов, которые могут быть получены параллельно одним набором реплик. Это число необходимо ограничивать, так как ребалансер отправляет большое количество бакетов из существующих наборов реплик в новый добавленный набор. Это создает высокую нагрузку на новый набор реплик.

Пример

Предположим, значение rebalancer_max_receiving равно 100, а bucket_count --- 1000. Имеется 3 набора реплик с 333, 333 и 334 бакетами соответственно. При добавлении нового набора реплик значение etalon_bucket_count каждого набора становится равным 250. Вместо получения всех 250 бакетов за один раз новый набор реплик последовательно получает 100, 100 и 50 бакетов.

Тип: integer

Значение по умолчанию: 100

Переменная окружения: TT_SHARDING_REBALANCER_MAX_RECEIVING

sharding.rebalancer_max_sending

Степень параллелизма для параллельного ребалансирования.

Тип: integer

Значение по умолчанию: 1

Maximum: 15

Переменная окружения: TT_SHARDING_REBALANCER_MAX_SENDING

sharding.rebalancer_mode

Начиная с: 3.1.0

Настройка выбора ребалансера:

  • auto (по умолчанию): если нет наборов реплик с ролью шардирования rebalancer (sharding.roles), набор реплик с ребалансером выбирается автоматически среди всех наборов реплик.
  • manual: один из наборов реплик должен иметь роль шардирования rebalancer. Ребалансер находится в этом наборе реплик.
  • off: ребалансирование отключено независимо от того, существует ли набор реплик с ролью шардирования rebalancer или нет.

Тип: string

Значение по умолчанию: 'auto'

Переменная окружения: TT_SHARDING_REBALANCER_MODE

sharding.roles

Роли набора реплик в контексте шардирования. Набор реплик может иметь следующие роли:

Роль rebalancer необязательна. Если она не указана, ребалансер выбирается автоматически из мастер-экземпляров наборов реплик.

Может быть не более одного набора реплик с ролью rebalancer. Кроме того, этот набор реплик должен иметь роль storage.

Пример

replicasets:  storage-a:    sharding:      roles: [storage, rebalancer]

См. также: vshard_config_sharding_roles

Тип: array

Значение по умолчанию: nil

Переменная окружения: TT_SHARDING_ROLES

sharding.sched_move_quota

Квота планировщика на перемещение бакетов, используемая ребалансером.

sched_move_quota определяет, сколько перемещений бакетов может быть выполнено подряд при наличии ожидающих storage refs. После этого перемещения бакетов блокируются, и роутер продолжает выполнять map-reduce запросы.

См. также: sharding.sched_ref_quota

Тип: number

Значение по умолчанию: 1

Переменная окружения: TT_SHARDING_SCHED_MOVE_QUOTA

sharding.sched_ref_quota

Квота планировщика на storage refs, используемая map-reduce API роутера. Например, функция vshard.router.map_callrw() реализует консистентный map-reduce по всему кластеру.

sched_ref_quota определяет, сколько storage refs, а следовательно, и map-reduce запросов, может быть выполнено на хранилище подряд при наличии ожидающих перемещений бакетов. После этого storage refs блокируются, и ребалансер продолжает перемещение бакетов.

См. также: sharding.sched_move_quota

Тип: number

Значение по умолчанию: 300

Переменная окружения: TT_SHARDING_SCHED_REF_QUOTA

sharding.shard_index

Имя или идентификатор TREE-индекса по идентификатору бакета. Спейсы без этого индекса не участвуют в шардированном кластере Tarantool и при необходимости могут использоваться как обычные спейсы. Необходимо указать первую часть индекса, остальные части необязательны.

См. также: vshard-define-spaces

Тип: string

Значение по умолчанию: 'bucket_id'

Переменная окружения: TT_SHARDING_SHARD_INDEX

sharding.sync_timeout

Время ожидания синхронизации старого мастера с репликами перед понижением. Используется при переключении мастера или при ручном вызове функции sync().

Тип: number

Значение по умолчанию: 1

Переменная окружения: TT_SHARDING_SYNC_TIMEOUT

sharding.weight

Начиная с: 3.1.0

Относительный объем данных, который может хранить набор реплик. Подробнее см. vshard-replica-set-weights.

Тип: number

Значение по умолчанию: 1

Переменная окружения: TT_SHARDING_WEIGHT

sharding.zone

Зона, которую можно задать для роутеров и реплик. Это позволяет отправлять запросы на чтение не только на мастер-экземпляр, но и на любую доступную реплику, ближайшую к роутеру.

Тип: integer

Значение по умолчанию: nil

Переменная окружения: TT_SHARDING_ZONE

snapshot

Секция snapshot определяет параметры конфигурации, связанные с файлами снимков. Подробнее о конфигурации снимков см. на странице Persistence.

snapshot.dir

Директория, в которой memtx хранит файлы снимков (.snap). Относительный путь в этом параметре интерпретируется относительно process.work_dir.

По умолчанию файлы снимков и WAL-файлы хранятся в одной директории. Однако можно задать разные значения для параметров snapshot.dir и wal.dir, чтобы хранить их на разных физических дисках для повышения производительности.

Тип: string

Значение по умолчанию: 'var/lib/{{ instance_name }}'

Переменная окружения: TT_SNAPSHOT_DIR

snapshot.snap_io_rate_limit

Снижает влияние box.snapshot() на производительность операций INSERT/UPDATE/DELETE путем ограничения количества мегабайт в секунду, записываемых на диск. Того же эффекта можно добиться, разделив расположения wal.dir и snapshot.dir и перенеся снимки на отдельный диск. Ограничение также влияет на то, что box.stat.vinyl().regulator может показывать для скорости записи дампов в файлы .run и .index.

Тип: number

Значение по умолчанию: box.NULL

Переменная окружения: TT_SNAPSHOT_SNAP_IO_RATE_LIMIT

snapshot.count

Максимальное количество снимков, хранящихся в директории snapshot.dir. Если после создания нового снимка их количество превышает это значение, сборщик мусора Tarantool удаляет старые снимки. Если для параметра snapshot.count задано значение 0, сборщик мусора не удаляет старые снимки.

Пример

В этом примере демон- контрольных точек создает снимок каждые два часа, пока не будет создано три снимка. После создания нового снимка (четвертого) самый старый снимок и все связанные с ним файлы журнала предзаписи удаляются.

snapshot:  by:    interval: 7200  count: 3

Тип: integer

Значение по умолчанию: 2

Переменная окружения: TT_SNAPSHOT_COUNT

snapshot.by.*

snapshot.by.interval

Интервал в секундах между запусками демона контрольных точек. Если для параметра задано значение больше нуля и есть активность, изменяющая базу данных, то демон контрольных точек вызывает box.snapshot() каждые snapshot.by.interval секунд, создавая каждый раз новый файл снимка. Если для параметра задано значение 0, демон контрольных точек отключен.

Пример

В этом примере демон контрольных точек создает новый снимок базы данных каждые два часа при наличии активности.

by:  interval: 7200

Тип: number

Значение по умолчанию: 3600

Переменная окружения: TT_SNAPSHOT_BY_INTERVAL

snapshot.by.wal_size

Пороговое значение общего размера в байтах для всех WAL-файлов, созданных с момента последнего снимка. При превышении заданного порога поток WAL уведомляет демона контрольных точек о необходимости создать новый снимок и удалить старые WAL-файлы.

Тип: integer

Значение по умолчанию: 10\^18

Переменная окружения: TT_SNAPSHOT_BY_WAL_SIZE

sql

Раздел sql определяет параметры конфигурации, относящиеся к SQL.

sql.cache_size

Максимальный размер кэша (в байтах) для всех подготовленных SQL-операторов. Чтобы узнать фактический размер кэша, используйте box.info.sql().cache.size.

Тип: integer

Значение по умолчанию: 5242880

Переменная окружения: TT_SQL_CACHE_SIZE

vinyl

Раздел vinyl определяет параметры конфигурации, относящиеся к движку хранения vinyl.

vinyl.bloom_fpr

Частота ложных срабатываний фильтра Блума --- допустимая вероятность того, что фильтр Блума выдаст неверный результат. Параметр vinyl.bloom_fpr является значением по умолчанию для опции bloom_fpr, передаваемой в space_object:create_index().

Тип: number

Значение по умолчанию: 0.05

Переменная окружения: TT_VINYL_BLOOM_FPR

vinyl.cache

Размер кэша для движка хранения vinyl. Размер кэша может изменяться динамически.

Тип: integer

Значение по умолчанию: 128 * 1024 * 1024

Переменная окружения: TT_VINYL_CACHE

vinyl.defer_deletes

Включает оптимизацию отложенных DELETE в vinyl. Эта оптимизация была отключена по умолчанию начиная с версии Tarantool 2.10 во избежание возможного снижения производительности при чтении из вторичных индексов.

Тип: boolean

Значение по умолчанию: false

Переменная окружения: TT_VINYL_DEFER_DELETES

vinyl.dir

Каталог, в котором будут храниться файлы или подкаталоги vinyl.

Этот параметр может содержать относительный путь к файлу. В этом случае он интерпретируется как относительный к process.work_dir.

Тип: string

Значение по умолчанию: 'var/lib/{{ instance_name }}'

Переменная окружения: TT_VINYL_DIR

vinyl.max_tuple_size

Размер наибольшей единицы выделения памяти для движка хранения vinyl. Значение может быть увеличено, если необходимо хранить большие кортежи.

Тип: integer

Значение по умолчанию: 1024 * 1024

Переменная окружения: TT_VINYL_MAX_TUPLE_SIZE

vinyl.memory

Максимальный объем оперативной памяти в байтах, используемой vinyl.

Тип: integer

Значение по умолчанию: 128 * 1024 * 1024

Переменная окружения: TT_VINYL_MEMORY

vinyl.page_size

Размер страницы. Страница - это единица чтения/записи для дисковых операций vinyl. Параметр vinyl.page_size является значением по умолчанию для опции page_size, передаваемой в space_object:create_index().

Тип: integer

Значение по умолчанию: 8 * 1024

Переменная окружения: TT_VINYL_PAGE_SIZE

vinyl.range_size

Максимальный размер диапазона по умолчанию для индекса vinyl, в байтах. Максимальный размер диапазона влияет на решение о разделении диапазона.

Если параметр vinyl.range_size задан (значение не null и не 0), он используется как значение по умолчанию для опции range_size, передаваемой в space_object:create_index().

Если параметр vinyl.range_size не задан (или явно установлен в null или 0), а range_size не указан при создании индекса, Tarantool задает значение позже, исходя из соображений производительности. Чтобы узнать фактическое значение, используйте index_object:stat().range_size.

Тип: integer

Значение по умолчанию: box.NULL (означает, что эффективное значение по умолчанию определяется во время выполнения) Переменная окружения: TT_VINYL_RANGE_SIZE

vinyl.read_threads

Максимальное количество потоков чтения, которые vinyl может использовать для параллельных операций, таких как ввод-вывод и сжатие.

Тип: integer

Значение по умолчанию: 1

Переменная окружения: TT_VINYL_READ_THREADS

vinyl.run_count_per_level

Максимальное количество прогонов на уровень в LSM-дереве vinyl. При превышении этого количества создается новый уровень. Параметр vinyl.run_count_per_level является значением по умолчанию для опции run_count_per_level, передаваемой в space_object:create_index().

Тип: integer

Значение по умолчанию: 2

Переменная окружения: TT_VINYL_RUN_COUNT_PER_LEVEL

vinyl.run_size_ratio

Отношение между размерами различных уровней в LSM-дереве. Параметр vinyl.run_size_ratio является значением по умолчанию для опции run_size_ratio, передаваемой в space_object:create_index().

Тип: number

Значение по умолчанию: 3.5

Переменная окружения: TT_VINYL_RUN_SIZE_RATIO

vinyl.timeout

В движке хранения vinyl имеется планировщик, выполняющий компактизацию. При нехватке доступной памяти планировщик компактизации может не успевать обрабатывать входящие запросы на обновление. В такой ситуации запросы могут завершаться по истечении времени ожидания в vinyl.timeout секунд. Это должно происходить редко, так как обычно vinyl ограничивает скорость вставок при нехватке пропускной способности для компактизации. Компактизацию также можно запустить вручную с помощью index_object:compact().

Тип: integer

Значение по умолчанию: 60

Переменная окружения: TT_VINYL_TIMEOUT

vinyl.write_threads

Максимальное количество потоков записи, которые vinyl может использовать для некоторых параллельных операций, таких как ввод-вывод и сжатие.

Тип: integer

Значение по умолчанию: 4

Переменная окружения: TT_VINYL_WRITE_THREADS

wal

Секция wal определяет параметры конфигурации, относящиеся к журналу предзаписи. Подробнее о конфигурации WAL см. на странице Сохранение данных.

wal.cleanup_delay

Задержка в секундах, предотвращающая немедленное удаление файлов журнала предзаписи сборщиком мусора Tarantool после перезапуска узла. Эта задержка исключает возможные ошибочные ситуации, когда мастер-узел удаляет WAL-файлы, необходимые репликам, после перезапуска. В результате реплики синхронизируются с мастер-узлом быстрее после его перезапуска и не нуждаются в повторном скачивании всех данных. После того как все узлы в наборе реплик запущены и работают, плановая сборка мусора возобновляется, даже если срок wal.cleanup_delay еще не истек.

См. также: wal.retention_period

Тип: number

Значение по умолчанию: 14400

Переменная окружения: TT_WAL_CLEANUP_DELAY

wal.dir

Директория, в которой хранятся файлы журнала предзаписи (.xlog). Относительный путь в этом параметре интерпретируется как относительный к process.work_dir.

По умолчанию WAL-файлы и снимки хранятся в одной директории. Однако можно задать разные значения для параметров wal.dir и snapshot.dir, чтобы хранить их на разных физических дисках для повышения производительности.

Тип: string

Значение по умолчанию: 'var/lib/{{ instance_name }}'

Переменная окружения: TT_WAL_DIR

wal.dir_rescan_delay

Интервал времени в секундах между периодическими сканированиями директории файлов журнала предзаписи при проверке изменений в WAL-файлах для репликации или горячего резерва.

Тип: number

Значение по умолчанию: 2

Переменная окружения: TT_WAL_DIR_RESCAN_DELAY

wal.max_size

Максимальное количество байт в одном файле журнала предзаписи. Если запрос приведет к тому, что размер .xlog-файла превысит wal.max_size, Tarantool создает новый WAL-файл.

Тип: integer

Значение по умолчанию: 268435456

Переменная окружения: TT_WAL_MAX_SIZE

wal.mode

Задает режим синхронизации фибер-WAL-диск:

  • none: журнал предзаписи не ведется. Узел с параметром wal.mode, установленным в значение none, не может быть мастер-узлом репликации.
  • write: фиберы ожидают записи своих данных в журнал предзаписи (без fsync(2)).
  • fsync: фиберы ожидают записи своих данных, fsync(2) выполняется после каждого write(2).

Тип: string

Значение по умолчанию: 'write'

Переменная окружения: TT_WAL_MODE

wal.queue_max_size

Размер очереди в байтах, используемой репликой для отправки новых транзакций в журнал предзаписи (WAL). Этот параметр помогает ограничить скорость, с которой реплика отправляет транзакции в WAL.

Ограничение размера очереди может быть полезно, когда реплика пытается синхронизироваться с мастер-узлом и считывает новые транзакции быстрее, чем записывает их в WAL.

Тип: integer

Значение по умолчанию: 16777216

Переменная окружения: TT_WAL_QUEUE_MAX_SIZE

wal.retention_period

Начиная с: 3.1.0 (только Enterprise Edition)

Задержка в секундах, предотвращающая удаление сборщиком мусора Tarantool файла журнала предзаписи после его закрытия. При перезапуске узла отсчет wal.retention_period ведется от времени последней модификации файла журнала предзаписи.

Сборщик мусора не отслеживает журналы предзаписи, которые должны быть переданы анонимным репликам, таким как:

  • Анонимные реплики, добавленные как часть конфигурации кластера (см. replication.anon).
  • CDC (Change Data Capture), извлекающий данные с помощью анонимной репликации.

В случае простоя реплики или CDC необходимые журналы предзаписи могут быть удалены. В результате для такой реплики потребуется повторная начальная загрузка. Параметр wal.retention_period позволяет предотвратить подобные проблемы.

Параметр wal.cleanup_delay также задает задержку, предотвращающую удаление журналов предзаписи сборщиком мусора Tarantool. Отличие в том, что сборщик мусора не учитывает wal.cleanup_delay, если все узлы в наборе реплик запущены и работают, что может привести к удалению необходимых журналов предзаписи.

Тип: number

Значение по умолчанию: 0

Переменная окружения: TT_WAL_RETENTION_PERIOD

wal.ext.*

В этой секции описаны параметры, относящиеся к расширениям WAL.

wal.ext.new

Включает сохранение нового кортежа для каждой выполненной CRUD-операции. Параметр действует для всех спейсов. Чтобы настроить параметр для отдельных спейсов, используйте параметр wal.ext.spaces.

Тип: boolean

Значение по умолчанию: false

Переменная окружения: TT_WAL_EXT_NEW

wal.ext.old

Включает сохранение старого кортежа для каждой выполненной CRUD-операции. Параметр действует для всех спейсов. Чтобы настроить параметр для отдельных спейсов, используйте параметр wal.ext.spaces.

Тип: boolean

Значение по умолчанию: false

Переменная окружения: TT_WAL_EXT_OLD

wal.ext.spaces

Явно включает или отключает сохранение старого и нового кортежа в записи WAL для заданного спейса. Конфигурация для отдельных спейсов имеет приоритет над конфигурацией в параметрах wal.ext.new и wal.ext.old.

Параметр представляет собой пару «ключ-значение»:

  • Ключ - имя спейса (строка).
  • Значение - таблица, включающая два необязательных логических параметра: old и new. Формат и значения по умолчанию этих параметров описаны в wal.ext.old и wal.ext.new.

Пример

В примере только новые кортежи добавляются в журнал для спейса bands.

ext:  new: true  old: true  spaces:    bands:      old: false

Тип: map

Значение по умолчанию: nil

Переменная окружения: TT_WAL_EXT_SPACES