elasticsearch-shard

場合によっては、シャードコピーのLuceneインデックスまたはtranslogが破損することがあります。elasticsearch-shardコマンドを使用すると、シャードの良好なコピーが自動的に回復できない場合やバックアップから復元できない場合に、シャードの破損した部分を削除できます。

  1. ## Synopsis
  2. #### Shell
  3. ``````shell
  4. bin/elasticsearch-shard remove-corrupted-data
  5. ([--index <Index>] [--shard-id <ShardId>] | [--dir <IndexPath>])
  6. [--truncate-clean-translog]
  7. [-E <KeyValuePair>]
  8. [-h, --help] ([-s, --silent] | [-v, --verbose])
  9. `

Description

Elasticsearchがシャードのデータが破損していることを検出すると、そのシャードコピーは失敗し、使用を拒否します。通常の条件下では、シャードは別のコピーから自動的に回復されます。シャードの良好なコピーが利用できず、スナップショットから復元できない場合は、elasticsearch-shardを使用して破損したデータを削除し、影響を受けていないセグメントの残りのデータへのアクセスを復元できます。

  1. 破損したシャードデータを削除するには、`````remove-corrupted-data`````サブコマンドを使用します。
  2. パスを指定する方法は2つあります:
  3. - `````--index`````および`````--shard-id`````オプションを使用してインデックス名とシャード名を指定します。
  4. - `````--dir`````オプションを使用して、破損したインデックスまたはtranslogファイルへのフルパスを指定します。
  5. [](#cli-tool-jvm-options-shard)
  6. ### JVM options
  7. CLIツールは64MBのヒープで実行されます。ほとんどのツールにとって、この値は問題ありません。ただし、必要に応じて`````CLI_JAVA_OPTS`````環境変数を設定することで上書きできます。たとえば、次のようにして`````elasticsearch-shard`````ツールで使用されるヒープサイズを1GBに増やします。
  8. #### Shell
  9. ``````shell
  10. export CLI_JAVA_OPTS="-Xmx1g"
  11. bin/elasticsearch-shard ...
  12. `

Removing corrupted data

  1. `````elasticsearch-shard`````を実行する前にデータをバックアップしてください。これは、シャードから破損したデータを削除する破壊的な操作です。
  2. #### Txt
  3. ``````txt
  4. $ bin/elasticsearch-shard remove-corrupted-data --index my-index-000001 --shard-id 0
  5. WARNING: Elasticsearch MUST be stopped before running this tool.
  6. Please make a complete backup of your index before using this tool.
  7. Opening Lucene index at /var/lib/elasticsearchdata/indices/P45vf_YQRhqjfwLMUvSqDw/0/index/
  8. >> Lucene index is corrupted at /var/lib/elasticsearchdata/indices/P45vf_YQRhqjfwLMUvSqDw/0/index/
  9. Opening translog at /var/lib/elasticsearchdata/indices/P45vf_YQRhqjfwLMUvSqDw/0/translog/
  10. >> Translog is clean at /var/lib/elasticsearchdata/indices/P45vf_YQRhqjfwLMUvSqDw/0/translog/
  11. Corrupted Lucene index segments found - 32 documents will be lost.
  12. WARNING: YOU WILL LOSE DATA.
  13. Continue and remove docs from the index ? Y
  14. WARNING: 1 broken segments (containing 32 documents) detected
  15. Took 0.056 sec total.
  16. Writing...
  17. OK
  18. Wrote new segments file "segments_c"
  19. Marking index with the new history uuid : 0pIBd9VTSOeMfzYT6p0AsA
  20. Changing allocation id V8QXk-QXSZinZMT-NvEq4w to tjm9Ve6uTBewVFAlfUMWjA
  21. You should run the following command to allocate this shard:
  22. POST /_cluster/reroute?metric=none
  23. {
  24. "commands" : [
  25. {
  26. "allocate_stale_primary" : {
  27. "index" : "index42",
  28. "shard" : 0,
  29. "node" : "II47uXW2QvqzHBnMcl2o_Q",
  30. "accept_data_loss" : false
  31. }
  32. }
  33. ]
  34. }
  35. You must accept the possibility of data loss by changing the `accept_data_loss` parameter to `true`.
  36. Deleted corrupt marker corrupted_FzTSBSuxT7i3Tls_TgwEag from /var/lib/elasticsearchdata/indices/P45vf_YQRhqjfwLMUvSqDw/0/index/
  37. `

elasticsearch-shardを使用して破損したデータを削除すると、シャードの割り当てIDが変更されます。ノードを再起動した後は、cluster reroute APIを使用してElasticsearchに新しいIDを使用するように指示する必要があります。elasticsearch-shardコマンドは、送信する必要があるリクエストを示します。

また、-hオプションを使用して、elasticsearch-shardツールがサポートするすべてのオプションとパラメータのリストを取得することもできます。

最後に、--truncate-clean-translogオプションを使用して、破損していない場合でもシャードのtranslogを切り詰めることができます。