Перейти к содержанию

Файл конфигурации

Файл конфигурации содержит параметры кластера и инстанса для запуска Picodata.

Назначение файла конфигурации

Использование файла конфигурации является дополнительным способом задания параметров кластера и инстанса при запуске Picodata, помимо опций команды picodata run и переменных окружения.

Команда для запуска инстанса Picodata, если файл конфигурации назван config.yaml и расположен в директории вызова команды:

picodata run

Команда для запуска инстанса Picodata в остальных случаях:

picodata run --config <PATH>

где <PATH> — путь к файлу конфигурации в формате YAML.

См. также:

Описание файла конфигурации

Результатом выполнения команды picodata config default -o config.yaml является файл конфигурации Picodata в формате YAML со стандартными значениями параметров:

config.yaml
cluster:
  cluster_id: demo # (1)!
  tier:
    default:
      replication_factor: 1 # (4)!
      can_vote: true # (3)!
  default_replication_factor: 1 # (2)!
instance:
  data_dir: . # (8)!
  service_password_file: null # (25)!
  instance_id: null # (11)!
  replicaset_id: null # (24)!
  tier: default # (27)!
  failure_domain: {} # (9)!
  peer: # (20)!
  - localhost:3301
  listen: localhost:3301 # (13)!
  advertise_address: localhost:3301 # (6)!
  http_listen: null # (10)!
  admin_socket: ./admin.sock # (5)!
  plugin_dir: null # (23)!
  audit: null # (7)!
  shredding: false # (26)!
  log:
    level: info # (16)!
    destination: null # (14)!
    format: plain # (15)!
  memtx:
    memory: 67108864 # (19)!
    checkpoint_count: 2 # (17)!
    checkpoint_interval: 3600.0 # (18)!
  vinyl:
    memory: 134217728 # (29)!
    cache: 134217728 # (28)!
  iproto:
    max_concurrent_messages: 768 # (12)!
  pg:
    listen: null # (21)!
    ssl: false # (22)!
  1. cluster.cluster_id
  2. cluster.default_replication_factor
  3. cluster.tier.<tier_name>.can_vote
  4. cluster.tier.<tier_name>.replication_factor
  5. instance.admin_socket
  6. instance.advertise_address
  7. instance.audit
  8. instance.data_dir
  9. instance.failure_domain
  10. instance.http_listen
  11. instance.instance_id
  12. instance.iproto.max_concurrent_messages
  13. instance.listen
  14. instance.log.destination
  15. instance.log.format
  16. instance.log.level
  17. instance.memtx.checkpoint_count
  18. instance.memtx.checkpoint_interval
  19. instance.memtx.memory
  20. instance.peer
  21. instance.pg.listen
  22. instance.pg.ssl
  23. instance.plugin_dir
  24. instance.replicaset_id
  25. instance.service_password_file
  26. instance.shredding
  27. instance.tier
  28. instance.vinyl.cache
  29. instance.vinyl.memory

См. также:

Параметры файла конфигурации

cluster.cluster_id

Имя кластера. Инстанс не сможет присоединиться к кластеру с другим именем.

Данные:

  • Тип: str
  • Значение по умолчанию: demo

Аналогичная переменная окружения: PICODATA_CLUSTER_ID
Аналогичная команда: picodata run --cluster-id

cluster.default_replication_factor

Число реплик — инстансов с одинаковым набором хранимых данных — для каждого репликасета.

Данные:

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

Аналогичная переменная окружения: PICODATA_INIT_REPLICATION_FACTOR
Аналогичная команда: picodata run --init-replication-factor

cluster.tier.<tier_name>.can_vote

Признак тира <tier_name>, определяющий возможность инстансов участвовать в голосовании на выборах raft-лидера.

Данные:

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

Аналогичная команда — picodata run --config-parameter. Пример:

picodata run -c cluster.tier='{"default": {"replication_factor": 1, "can_vote": false}}'

См. также:

cluster.tier.<tier_name>.replication_factor

Фактор репликации тира <tier_name>.

Данные:

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

Аналогичная команда — picodata run --config-parameter. Пример:

picodata run -c cluster.tier='{"default": {"replication_factor": 3, "can_vote": true}}'

instance.admin_socket

Путь к unix-сокету для подключения к консоли администратора с помощью команды picodata admin. В отличие от picodata connect, коммуникация осуществляется в виде обычного текста и всегда происходит под учетной записью администратора.

Данные:

  • Тип: str
  • Значение по умолчанию: ./admin.sock

Аналогичная переменная окружения: PICODATA_ADMIN_SOCK
Аналогичная команда: picodata run --admin-sock

instance.advertise_address

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

Данные:

  • Тип: str
  • Значение по умолчанию: localhost:3301

Аналогичная переменная окружения: PICODATA_ADVERTISE
Аналогичная команда: picodata run --advertise

instance.audit

Конфигурация журнала аудита. Доступны следующие варианты:

  • file:<FILE> или просто <FILE> — запись в файл
  • pipe:<COMMAND> или | <COMMAND> — перенаправление вывода в подпроцесс
  • syslog: — перенаправление вывода в службу syslog защищенной ОС

Данные:

  • Тип: str
  • Значение по умолчанию: null

Аналогичная переменная окружения: PICODATA_AUDIT_LOG
Аналогичная команда: picodata run --audit

instance.data_dir

Рабочая директория инстанса. Здесь Picodata хранит все данные.

Данные:

  • Тип: str
  • Значение по умолчанию: .

Аналогичная переменная окружения: PICODATA_DATA_DIR
Аналогичная команда: picodata run --data-dir

instance.failure_domain

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

Данные:

  • Тип: Block Mappings of { str: str }
  • Значение по умолчанию: {}

Аналогичная переменная окружения: PICODATA_FAILURE_DOMAIN
Аналогичная команда: picodata run --failure-domain

instance.http_listen

Адрес HTTP-сервера.

Данные:

  • Тип: str
  • Значение по умолчанию: null

Аналогичная переменная окружения: PICODATA_HTTP_LISTEN
Аналогичная команда: picodata run --http-listen

instance.instance_id

Имя инстанса. При отсутствии параметра значение будет автоматически сгенерировано raft-лидером в момент присоединения инстанса к кластеру.

Данные:

  • Тип: str
  • Значение по умолчанию: null

Аналогичная переменная окружения: PICODATA_INSTANCE_ID
Аналогичная команда: picodata run --instance-id

instance.iproto.max_concurrent_messages

Максимальное количество сообщений, которое Picodata обрабатывает параллельно.

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

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

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

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

Данные:

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

Аналогичная команда — picodata run --config-parameter. Пример:

picodata run -c instance.iproto.max_concurrent_messages=1536

instance.listen

Сетевой адрес инстанса.

Данные:

  • Тип: str
  • Значение по умолчанию: localhost:3301

Аналогичная переменная окружения: PICODATA_LISTEN
Аналогичная команда: picodata run --listen

instance.log.destination

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

  • file:<FILE> или просто <FILE> — запись в файл
  • pipe:<COMMAND> или | <COMMAND> — перенаправление вывода в подпроцесс
  • syslog: — перенаправление вывода в службу syslog защищенной ОС

По умолчанию отладочный журнал выводится в stderr.

Данные:

  • Тип: str
  • Значение по умолчанию: null

Аналогичная переменная окружения: PICODATA_LOG
Аналогичная команда: picodata run --log

instance.log.format

Формат отладочного журнала.

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

Данные:

  • Тип: str
  • Значение по умолчанию: plain

Аналогичная переменная окружения: PICODATA_LOG
Аналогичная команда — picodata run --config-parameter. Пример:

picodata run -c instance.log.format=json

instance.log.level

Уровень важности событий, регистрируемых в отладочном журнале.

Возможные значения: fatal, system, error, crit, warn, info, verbose, debug

Данные:

  • Тип: str
  • Значение по умолчанию: info

Аналогичная переменная окружения: PICODATA_LOG_LEVEL
Аналогичная команда: picodata run --log-level

instance.memtx.checkpoint_count

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

Данные:

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

Аналогичная команда — picodata run --config-parameter. Пример:

picodata run -c instance.memtx.checkpoint_count=5

instance.memtx.checkpoint_interval

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

Данные:

  • Тип: float
  • Значение по умолчанию: 3600.0 (1 час)

Аналогичная команда — picodata run --config-parameter. Пример:

picodata run -c instance.memtx.checkpoint_interval=7200.0

instance.memtx.memory

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

Минимальное значение — 33,554,432 байтов (32 МБ)

Данные:

  • Тип: int
  • Значение по умолчанию: 67108864 (64 МБ)

Аналогичная переменная окружения: PICODATA_MEMTX_MEMORY
Аналогичная команда: picodata run --memtx-memory

instance.peer

Список сетевых адресов других инстансов. Используется при инициализации кластера и присоединении инстанса к уже существующему кластеру.

Данные:

  • Тип: Block Sequence of str
  • Значение по умолчанию: - localhost:3301

Аналогичная переменная окружения: PICODATA_PEER
Аналогичная команда: picodata run --peer

instance.pg.listen

Адрес сервера Pgproto.

Данные:

  • Тип: str
  • Значение по умолчанию: null

Аналогичная переменная окружения: PICODATA_PG_LISTEN
Аналогичная команда: picodata run --pg-listen

instance.pg.ssl

Признак использования протокола SSL при подключении к Pgproto.

Если для признака указано значение true, в рабочей директории инстанса <DATA_DIR> должны находиться необходимые SSL-сертификаты:

  • server.crt
  • server.key

Данные:

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

Аналогичная команда — picodata run --config-parameter. Пример:

picodata run -c instance.pg.ssl=true

instance.plugin_dir

Путь к директории, содержащей файлы плагинов.

Данные:

  • Тип: str
  • Значение по умолчанию: null

Аналогичная переменная окружения: PICODATA_PLUGIN_DIR
Аналогичная команда: picodata run --plugin-dir

instance.replicaset_id

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

Данные:

  • Тип: str
  • Значение по умолчанию: null

Аналогичная переменная окружения: PICODATA_REPLICASET_ID
Аналогичная команда: picodata run --replicaset-id

instance.service_password_file

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

Данные:

  • Тип: str
  • Значение по умолчанию: null

Аналогичная переменная окружения: PICODATA_SERVICE_PASSWORD_FILE
Аналогичная команда: picodata run --service-password-file

instance.shredding

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

Данные:

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

Аналогичная переменная окружения: PICODATA_SHREDDING
Аналогичная команда: picodata run --shredding

instance.tier

Имя тира, которому будет принадлежать инстанс. Используется при инициализации кластера и присоединении инстанса к уже существующему кластеру.

Данные:

  • Тип: str
  • Значение по умолчанию: default

Аналогичная переменная окружения: PICODATA_INSTANCE_TIER
Аналогичная команда: picodata run --tier

instance.vinyl.cache

Размер кэша в байтах для движка хранения vinyl.

Данные:

  • Тип: int
  • Значение по умолчанию: 134217728 (128 МБ)

Аналогичная команда — picodata run --config-parameter. Пример:

picodata run -c instance.vinyl.cache=268435456

instance.vinyl.memory

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

Данные:

  • Тип: int
  • Значение по умолчанию: 134217728 (128 МБ)

Аналогичная команда — picodata run --config-parameter. Пример:

picodata run -c instance.vinyl.memory=268435456