2018-09-19 04:28:22 -04:00
|
|
|
[[shard-tool]]
|
|
|
|
== elasticsearch-shard
|
|
|
|
|
2019-10-11 10:43:59 -04:00
|
|
|
In some cases the Lucene index or translog of a shard copy can become corrupted.
|
|
|
|
The `elasticsearch-shard` command enables you to remove corrupted parts of the
|
|
|
|
shard if a good copy of the shard cannot be recovered automatically or restored
|
|
|
|
from backup.
|
2018-09-19 04:28:22 -04:00
|
|
|
|
|
|
|
[WARNING]
|
|
|
|
You will lose the corrupted data when you run `elasticsearch-shard`. This tool
|
|
|
|
should only be used as a last resort if there is no way to recover from another
|
|
|
|
copy of the shard or restore a snapshot.
|
|
|
|
|
2020-07-23 12:42:33 -04:00
|
|
|
[discrete]
|
2019-10-11 10:43:59 -04:00
|
|
|
=== Synopsis
|
|
|
|
|
|
|
|
[source,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])
|
|
|
|
--------------------------------------------------
|
|
|
|
|
2020-07-23 12:42:33 -04:00
|
|
|
[discrete]
|
2019-10-11 10:43:59 -04:00
|
|
|
=== Description
|
|
|
|
|
|
|
|
When {es} detects that a shard's data is corrupted, it fails that shard copy and
|
|
|
|
refuses to use it. Under normal conditions, the shard is automatically recovered
|
|
|
|
from another copy. If no good copy of the shard is available and you cannot
|
|
|
|
restore one from a snapshot, you can use `elasticsearch-shard` to remove the
|
|
|
|
corrupted data and restore access to any remaining data in unaffected segments.
|
2018-09-19 04:28:22 -04:00
|
|
|
|
|
|
|
[WARNING]
|
|
|
|
Stop Elasticsearch before running `elasticsearch-shard`.
|
|
|
|
|
|
|
|
To remove corrupted shard data use the `remove-corrupted-data` subcommand.
|
|
|
|
|
|
|
|
There are two ways to specify the path:
|
|
|
|
|
|
|
|
* Specify the index name and shard name with the `--index` and `--shard-id`
|
|
|
|
options.
|
|
|
|
* Use the `--dir` option to specify the full path to the corrupted index or
|
|
|
|
translog files.
|
|
|
|
|
2020-07-23 12:42:33 -04:00
|
|
|
[discrete]
|
2019-10-11 10:43:59 -04:00
|
|
|
==== Removing corrupted data
|
2018-09-19 04:28:22 -04:00
|
|
|
|
|
|
|
`elasticsearch-shard` analyses the shard copy and provides an overview of the
|
|
|
|
corruption found. To proceed you must then confirm that you want to remove the
|
|
|
|
corrupted data.
|
|
|
|
|
|
|
|
[WARNING]
|
|
|
|
Back up your data before running `elasticsearch-shard`. This is a destructive
|
|
|
|
operation that removes corrupted data from the shard.
|
|
|
|
|
|
|
|
[source,txt]
|
|
|
|
--------------------------------------------------
|
2020-08-03 13:31:19 -04:00
|
|
|
$ bin/elasticsearch-shard remove-corrupted-data --index my-index-000001 --shard-id 0
|
2018-09-19 04:28:22 -04:00
|
|
|
|
|
|
|
|
|
|
|
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/nodes/0/indices/P45vf_YQRhqjfwLMUvSqDw/0/index/
|
|
|
|
|
|
|
|
>> Lucene index is corrupted at /var/lib/elasticsearchdata/nodes/0/indices/P45vf_YQRhqjfwLMUvSqDw/0/index/
|
|
|
|
|
|
|
|
Opening translog at /var/lib/elasticsearchdata/nodes/0/indices/P45vf_YQRhqjfwLMUvSqDw/0/translog/
|
|
|
|
|
|
|
|
|
|
|
|
>> Translog is clean at /var/lib/elasticsearchdata/nodes/0/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
|
|
|
|
{
|
|
|
|
"commands" : [
|
|
|
|
{
|
|
|
|
"allocate_stale_primary" : {
|
|
|
|
"index" : "index42",
|
|
|
|
"shard" : 0,
|
|
|
|
"node" : "II47uXW2QvqzHBnMcl2o_Q",
|
|
|
|
"accept_data_loss" : false
|
|
|
|
}
|
|
|
|
}
|
|
|
|
]
|
|
|
|
}
|
|
|
|
|
2019-10-11 10:43:59 -04:00
|
|
|
You must accept the possibility of data loss by changing the `accept_data_loss` parameter to `true`.
|
2018-09-19 04:28:22 -04:00
|
|
|
|
|
|
|
Deleted corrupt marker corrupted_FzTSBSuxT7i3Tls_TgwEag from /var/lib/elasticsearchdata/nodes/0/indices/P45vf_YQRhqjfwLMUvSqDw/0/index/
|
|
|
|
|
|
|
|
--------------------------------------------------
|
|
|
|
|
|
|
|
When you use `elasticsearch-shard` to drop the corrupted data, the shard's
|
|
|
|
allocation ID changes. After restarting the node, you must use the
|
2019-10-11 10:43:59 -04:00
|
|
|
<<cluster-reroute,cluster reroute API>> to tell Elasticsearch to use the new ID.
|
|
|
|
The `elasticsearch-shard` command shows the request that you need to submit.
|
2018-09-19 04:28:22 -04:00
|
|
|
|
|
|
|
You can also use the `-h` option to get a list of all options and parameters
|
|
|
|
that the `elasticsearch-shard` tool supports.
|
2019-10-11 10:43:59 -04:00
|
|
|
|
|
|
|
Finally, you can use the `--truncate-clean-translog` option to truncate the
|
|
|
|
shard's translog even if it does not appear to be corrupt.
|