Spec-Zone.ru › Elasticsearch 7
›Elasticsearch Guide [7.17] ›Модули индексов

Журнал транзакций

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

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

Elasticsearch сброс — это процесс выполнения коммита Lucene и начала новой генерации translog. Сбросы выполняются автоматически в фоновом режиме, чтобы убедиться, что translog не станет слишком большим, что увеличит время повторного воспроизведения операций во время восстановления. Возможность выполнения сброса вручную также доступна через API, хотя это редко требуется.

Настройки translog

Данные в translog сохраняются на диск только при fsync и коммита. В случае аппаратного сбоя, сбоя операционной системы, сбоя JVM или сбоя фрагмента любые данные, записанные с момента предыдущего коммита translog, будут потеряны.

По умолчанию, index.translog.durability установлено в значение request, что означает, что Elasticsearch будет сообщать клиенту об успешном выполнении запросов индексации, удаления, обновления или массовой обработки только после успешного fsync и коммита в translog на первичном узле и на каждом выделенном реплике. Если index.translog.durability установлено в значение async, тогда Elasticsearch fsync и коммитит translog только каждые index.translog.sync_interval, что означает, что любые операции, выполненные непосредственно перед сбоем, могут быть утеряны при восстановлении узла.

Следующие динамически изменяемые настройки на уровне индекса контролируют поведение translog:

index.translog.sync_interval
Частота fsync translog на диск и коммита, независимо от операций записи. По умолчанию 5s. Значения меньше 100ms не допускаются.
index.translog.durability

Необходимо ли fsync и коммитить translog после каждой операции индексации, удаления, обновления или массовой обработки. Эта настройка принимает следующие параметры:

request
(по умолчанию) fsync и коммит после каждой операции. В случае аппаратного сбоя все подтверждённые записи уже будут сохранены на диске.
async
fsync и коммит в фоновом режиме каждые sync_interval. В случае сбоя все подтверждённые записи с момента последнего автоматического коммита будут отброшены.
index.translog.flush_threshold_size
Translog хранит все операции, которые ещё не были надёжно сохранены в Lucene (т.е. не являются частью точки коммита Lucene). Хотя эти операции доступны для чтения, они потребуют повторного воспроизведения, если фрагмент был остановлен и подлежал восстановлению. Эта настройка контролирует максимальный общий размер этих операций, чтобы предотвратить слишком длительные восстановления. После достижения максимального размера происходит сброс, генерирующий новую точку коммита Lucene. По умолчанию 512mb.

Удержание translog

Устарело в версии 7.4.0.

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

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

index.translog.retention.size
Контролирует общий размер файлов translog, которые нужно сохранить для каждого фрагмента. Сохранение большего количества файлов translog увеличивает вероятность выполнения операции основанной синхронизации при восстановлении реплики. Если файлов translog недостаточно, восстановление реплики будет переключено на синхронизацию на основе файлов. По умолчанию 512mb. Эта настройка игнорируется и не должна устанавливаться, если включены мягкие удаления. Мягкие удаления включены по умолчанию в индексах, созданных в версиях Elasticsearch 7.0.0 и выше.
index.translog.retention.age
Контролирует максимальную продолжительность хранения файлов translog каждым фрагментом. Сохранение большего количества файлов translog увеличивает вероятность выполнения операции основанной синхронизации при восстановлении реплик. Если файлов translog недостаточно, восстановление реплики будет переключено на синхронизацию на основе файлов. По умолчанию 12h. Эта настройка игнорируется и не должна устанавливаться, если включены мягкие удаления. Мягкие удаления включены по умолчанию в индексах, созданных в версиях Elasticsearch 7.0.0 и выше.

© 2023-2025 Elasticsearch
As of September 2024, Elasticsearch is available under a choice of three licenses: the Server Side Public License (SSPL), the Elastic License, or the AGPLv3 (OSI approved).
Elasticsearch and the Elasticsearch logo are trademarks of Elasticsearch B.V., registered in the U.S. and in other countries.
https://www.elastic.co/guide/en/elasticsearch/reference/7.17/index-modules-translog.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API