【问题标题】:Elasticsearch Snapshot failed - Cannot RestoreElasticsearch 快照失败 - 无法恢复
【发布时间】:2021-02-04 11:29:41
【问题描述】:

我正在尝试将数据从一个实例移动到另一个弹性搜索实例。如here 所述,我已经创建了 Roles 和 s3 存储桶。

我已经在两个实例中注册了存储库,快照创建成功,s3 有了新对象。但是当我运行恢复命令时。我收到如下错误

:[{"type":"snapshot_restore_exception","reason":"[test:sample5/xcMBVd21SQky8E2TX8Z76xf] index [example] wasn't fully snapshotted - cannot restore"}]

我使用 python 脚本创建了一个快照,

path = '_snapshot/test/' + sampe_snap
url = host + path
payload = {
  "indices": "example",
  "include_global_state": False
}

r = requests.put(url, json=payload, auth=awsauth) 

返回

{"accepted":true}

为了调试,我使用了 Kibana 并搜索了快照。如下所示

GET _snapshot/test/sampe_snap
    ....
    "indices" : [ "example" ],
    "include_global_state" : false,
    "state" : "PARTIAL",
    "start_time" : "2021-02-04T11:14:22.153Z",
    "start_time_in_millis" : 1612437262153,
    "end_time" : "2021-02-04T11:14:22.554Z",
    "end_time_in_millis" : 1612437262554,
    "duration_in_millis" : 401,
    "failures" : [ {
      "index" : "example",
      "index_uuid" : "example",
      "shard_id" : 3,
      "reason" : """java.nio.file.NoSuchFileException: Blob object [indices/TJz0FNoGQUfvJ5pbTFLyQ/3/index-f16nCDQoiRl4UV8vCFSA] not found: The specified key does not exist.
    (Service: Amazon S3; Status Code: 404; Error Code: NoSuchKey...;

为什么会失败?

【问题讨论】:

  • 嗯,错误信息很清楚:index [example] wasn't fully snapshotted - cannot restore 这意味着您尝试恢复的索引没有完全快照,因此无法恢复
  • @Val 我已经更新了问题,请看一下

标签: amazon-web-services elasticsearch amazon-s3 aws-elasticsearch


【解决方案1】:

错误信息很清楚:

索引 [示例] 未完全快照 - 无法恢复

这意味着您尝试恢复的索引没有完全快照,因此无法恢复。

从快照详情中可以看到,它有一个state PARTIAL,这意味着并非索引的所有分片都可以成功快照。在您的情况下,example 索引的 3 号分片未成功创建快照,因此在 S3 存储桶中找不到该分片的段(即index-f16nCDQoiRl4UV8vCFSA),因此无法恢复索引。

您可以尝试通过设置partial: true 来恢复该部分快照,但所有丢失的分片都是空的,因此您可能会缺少一些数据。

也许尝试另一个之前或之后创建的快照。

【讨论】:

  • 在我的情况下,每次即使使用单个索引,快照创建也会失败。 “碎片”:{“总数”:5,“失败”:5,“成功”:0 }
  • 当我搜索快照 ``` GET _snapshot/test/_all 它返回错误,“type”:“snapshot_missing_exception”,“reason”:“[mgtm-test:my-snapshot/Q0TyEey_TNuiF_50SQ1glA ] 不见了”
  • 您能否分享创建快照时在 ES 服务器日志中看到的内容?
  • 我没有收到任何错误日志。只有一些警告。 [2021-02-04T05:16:10825] [WARN] [o.e.c.s.ClusterApplierService] [3ee47ae36b7028746301af48aa83f3ca]簇状态施放任务[ApplyCommitRequest {术语= 88,版本= 796619,sourceNode = {ba4d072d2a8c63b60e1832f0109c2ac4} {kx7DSpLOToWNxLzEFm8N1g} {l6ruGMsiQ_yCZDr4er4c2g} {IP}{IP}{dimr}{AMAZON_INTERNALAMAZON_INTERNAL、distributed_snapshot_deletion_enabled=true}}] 耗时 [38s]高于 [30s] 的警告阈值:
  • 你能更新你的问题吗,它更清晰
【解决方案2】:

这里的问题是快照以PARTIAL 状态而不是SUCCESS 状态结束。

快照以 PARTIAL 状态结束的原因是由于索引 shard 3 内的 S3 存储库 index-f16nCDQoiRl4UV8vCFSA 文件中的某些问题TJz0FNoGQUfvJ5pbTFLyQ(索引example 的快照索引 id)丢失。这是存储库损坏的明显案例。

  "reason" : """java.nio.file.NoSuchFileException: Blob object [indices/TJz0FNoGQUfvJ5pbTFLyQ/3/index-f16nCDQoiRl4UV8vCFSA] not found: The specified key does not exist.

当集群负载过重(JVM > 80% 或 CPU 利用率 >80%)并且很少有节点从集群中退出时,会观察到这种存储库损坏。

解决此问题的一种方法是删除所有引用索引 :example 的快照。这将清理索引 example 的 S3 快照文件,现在当您拍摄新快照时,一切都会重新开始。

为了更安全,我建议联系 AWS 支持来修复这种类型的存储库损坏。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-05
    • 1970-01-01
    • 2021-05-21
    • 2023-03-27
    • 1970-01-01
    相关资源
    最近更新 更多