微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Elasticsearch 快照失败 - 无法恢复

如何解决Elasticsearch 快照失败 - 无法恢复

我正在尝试将数据从一个实例移动到另一个 elasticsearch 实例。我已经创建了 here 中提到的角色和 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...;

为什么会失败?

解决方法

错误信息非常清楚:

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

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

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

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

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

,

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

快照以PARTIAL状态结束的原因是由于索引index-f16nCDQoiRl4UV8vCFSA的{​​{1}}内的S3存储库shard 3文件中的一些问题(索引{{1}的快照索引ID }) 不见了。这是存储库损坏的明显案例。

TJz0FNoGQUfvJ5pbTFLyQ

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

解决此问题的一种方法是删除所有引用索引 :example 的快照。这将清除索引 "reason" : """java.nio.file.NoSuchFileException: Blob object [indices/TJz0FNoGQUfvJ5pbTFLyQ/3/index-f16nCDQoiRl4UV8vCFSA] not found: The specified key does not exist. 的 S3 快照文件,现在当您拍摄新快照时,一切都会重新开始。

为了更安全,我建议联系 AWS 支持以修复此类存储库损坏。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?