elasticsearch-shard
В некоторых случаях индекс Lucene или транслог копии фрагмента могут быть повреждены. Команда elasticsearch-shard позволяет удалить повреждённые части фрагмента, если исправную копию фрагмента нельзя автоматически восстановить или восстановить из резервной копии.
При запуске elasticsearch-shard вы потеряете повреждённые данные. Данная утилита должна использоваться только в крайних случаях, если нет возможности восстановить из другой копии фрагмента или восстановить снимок.
Синтаксис
bin/elasticsearch-shard remove-corrupted-data ([--index <Index>] [--shard-id <ShardId>] | [--dir <IndexPath>]) [--truncate-clean-translog] [-E <KeyValuePair>] [-h, --help] ([-s, --silent] | [-v, --verbose])
Описание
Когда Elasticsearch обнаруживает, что данные фрагмента повреждены, он помещает эту копию фрагмента в нерабочее состояние и отказывается её использовать. В нормальных условиях фрагмент автоматически восстанавливается из другой копии. Если нет доступной исправной копии фрагмента, и вы не можете восстановить его из снимка, вы можете использовать elasticsearch-shard, чтобы удалить повреждённые данные и восстановить доступ к оставшимся данным в неповреждённых сегментах.
Остановите Elasticsearch перед запуском elasticsearch-shard.
Для удаления повреждённых данных фрагмента используйте подкоманду remove-corrupted-data.
Существует два способа указать путь:
- Укажите имя индекса и имя фрагмента с помощью опций
--indexи--shard-id. - Используйте опцию
--dirдля указания полного пути к повреждённым файлам индекса или транслога.
Параметры JVM
Утилиты командной строки работают с кучей размером 64 МБ. Для большинства утилит этого значения достаточно. Однако, при необходимости, это значение можно изменить, установив переменную окружения CLI_JAVA_OPTS. Например, следующее увеличивает размер кучи, используемой утилитой elasticsearch-shard, до 1 ГБ.
export CLI_JAVA_OPTS="-Xmx1g" bin/elasticsearch-shard ...
Удаление повреждённых данных
elasticsearch-shard анализирует копию фрагмента и предоставляет обзор обнаруженных повреждений. Для продолжения необходимо подтвердить, что вы хотите удалить повреждённые данные.
Создайте резервную копию ваших данных перед запуском elasticsearch-shard. Это операция удаления, которая удаляет повреждённые данные из фрагмента.
$ bin/elasticsearch-shard remove-corrupted-data --index my-index-000001 --shard-id 0
WARNING: Elasticsearch MUST be stopped before running this tool.
Please make a complete backup of your index before using this tool.
Opening Lucene index at /var/lib/elasticsearchdata/indices/P45vf_YQRhqjfwLMUvSqDw/0/index/
>> Lucene index is corrupted at /var/lib/elasticsearchdata/indices/P45vf_YQRhqjfwLMUvSqDw/0/index/
Opening translog at /var/lib/elasticsearchdata/indices/P45vf_YQRhqjfwLMUvSqDw/0/translog/
>> Translog is clean at /var/lib/elasticsearchdata/indices/P45vf_YQRhqjfwLMUvSqDw/0/translog/
Corrupted Lucene index segments found - 32 documents will be lost.
WARNING: YOU WILL LOSE DATA.
Continue and remove docs from the index ? Y
WARNING: 1 broken segments (containing 32 documents) detected
Took 0.056 sec total.
Writing...
OK
Wrote new segments file "segments_c"
Marking index with the new history uuid : 0pIBd9VTSOeMfzYT6p0AsA
Changing allocation id V8QXk-QXSZinZMT-NvEq4w to tjm9Ve6uTBewVFAlfUMWjA
You should run the following command to allocate this shard:
POST /_cluster/reroute?metric=none
{
"commands" : [
{
"allocate_stale_primary" : {
"index" : "index42",
"shard" : 0,
"node" : "II47uXW2QvqzHBnMcl2o_Q",
"accept_data_loss" : false
}
}
]
}
You must accept the possibility of data loss by changing the `accept_data_loss` parameter to `true`.
Deleted corrupt marker corrupted_FzTSBSuxT7i3Tls_TgwEag from /var/lib/elasticsearchdata/indices/P45vf_YQRhqjfwLMUvSqDw/0/index/ Когда вы используете elasticsearch-shard для удаления повреждённых данных, идентификатор размещения фрагмента изменяется. После перезапуска узла вам необходимо использовать API перемаршрутизации кластера cluster reroute API, чтобы указать Elasticsearch использовать новый идентификатор. Команда elasticsearch-shard отображает запрос, который вам нужно отправить.
Вы также можете использовать опцию -h, чтобы получить список всех опций и параметров, которые поддерживает утилита elasticsearch-shard.
Наконец, вы можете использовать опцию --truncate-clean-translog для обнуления транслога фрагмента, даже если он не кажется повреждённым.
© 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/8.17/shard-tool.html