elasticsearch-shard
場合によっては、シャードコピーのLuceneインデックスまたはtranslogが破損することがあります。elasticsearch-shard
コマンドを使用すると、シャードの良好なコピーが自動的に回復できない場合やバックアップから復元できない場合に、シャードの破損した部分を削除できます。
## Synopsis
#### Shell
``````shell
bin/elasticsearch-shard remove-corrupted-data
([--index <Index>] [--shard-id <ShardId>] | [--dir <IndexPath>])
[--truncate-clean-translog]
[-E <KeyValuePair>]
[-h, --help] ([-s, --silent] | [-v, --verbose])
`
Description
Elasticsearchがシャードのデータが破損していることを検出すると、そのシャードコピーは失敗し、使用を拒否します。通常の条件下では、シャードは別のコピーから自動的に回復されます。シャードの良好なコピーが利用できず、スナップショットから復元できない場合は、elasticsearch-shard
を使用して破損したデータを削除し、影響を受けていないセグメントの残りのデータへのアクセスを復元できます。
破損したシャードデータを削除するには、`````remove-corrupted-data`````サブコマンドを使用します。
パスを指定する方法は2つあります:
- `````--index`````および`````--shard-id`````オプションを使用してインデックス名とシャード名を指定します。
- `````--dir`````オプションを使用して、破損したインデックスまたはtranslogファイルへのフルパスを指定します。
[](#cli-tool-jvm-options-shard)
### JVM options
CLIツールは64MBのヒープで実行されます。ほとんどのツールにとって、この値は問題ありません。ただし、必要に応じて`````CLI_JAVA_OPTS`````環境変数を設定することで上書きできます。たとえば、次のようにして`````elasticsearch-shard`````ツールで使用されるヒープサイズを1GBに増やします。
#### Shell
``````shell
export CLI_JAVA_OPTS="-Xmx1g"
bin/elasticsearch-shard ...
`
Removing corrupted data
`````elasticsearch-shard`````を実行する前にデータをバックアップしてください。これは、シャードから破損したデータを削除する破壊的な操作です。
#### Txt
``````txt
$ 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
を使用して破損したデータを削除すると、シャードの割り当てIDが変更されます。ノードを再起動した後は、cluster reroute APIを使用してElasticsearchに新しいIDを使用するように指示する必要があります。elasticsearch-shard
コマンドは、送信する必要があるリクエストを示します。
また、-h
オプションを使用して、elasticsearch-shard
ツールがサポートするすべてのオプションとパラメータのリストを取得することもできます。
最後に、--truncate-clean-translog
オプションを使用して、破損していない場合でもシャードのtranslogを切り詰めることができます。