诊断损坏的存储库
编辑诊断损坏的存储库编辑
多个 Elasticsearch 部署写入同一个快照存储库。Elasticsearch 不支持此配置,并且只允许一个集群写入同一个存储库。有关存储库内容损坏的潜在副作用,请参见 存储库内容,这些副作用可能无法通过以下指南解决。要解决此问题,请将存储库标记为只读或将其从所有其他部署中删除,然后在当前部署中重新添加(重新创建)存储库。
修复损坏的存储库将需要对写入同一个快照存储库的多个部署进行更改。只有一个部署必须写入存储库。将继续写入存储库的部署将被称为“主”部署(当前集群),而我们将标记存储库为只读的另一个(些)部署将被称为“辅助”部署。
首先在辅助部署上将存储库标记为只读
使用 Kibana
- 登录到 Elastic Cloud 控制台。
-
在 Elasticsearch 服务 面板中,单击您的部署的名称。
如果您的部署名称被禁用,您的 Kibana 实例可能不正常,在这种情况下,请联系 Elastic 支持。如果您的部署不包含 Kibana,您只需要 先启用它。
-
打开您的部署的侧边导航菜单(位于左上角的 Elastic 徽标下方),然后转到 堆栈管理 > 快照和恢复 > 存储库。
- 现在应该可以看到存储库表。单击要标记为只读的存储库右侧的铅笔图标。在打开的编辑页面上向下滚动并选中“只读存储库”。单击“保存”。或者,如果更希望完全删除存储库,请在存储库表中选择存储库名称左侧的复选框,然后单击表左上角的“删除存储库”红色按钮。
此时,只有主(当前)部署将存储库标记为可写。Elasticsearch 将其视为损坏,因此需要删除存储库并重新添加它,以便 Elasticsearch 可以恢复使用它。
请注意,我们现在正在配置主(当前)部署。
-
打开主部署的侧边导航菜单(位于左上角的 Elastic 徽标下方),然后转到 堆栈管理 > 快照和恢复 > 存储库。
- 单击存储库右侧的铅笔图标。在打开的编辑页面上向下滚动并单击“保存”,而无需对现有设置进行任何更改。
修复损坏的存储库将需要对写入同一个快照存储库的多个集群进行更改。只有一个集群必须写入存储库。我们将要继续写入存储库的集群称为“主”集群(当前集群),而我们将标记存储库为只读的另一个(些)集群称为“辅助”集群。
让我们首先处理辅助集群
-
获取存储库的配置
response = client.snapshot.get_repository( repository: 'my-repo' ) puts response
GET _snapshot/my-repo
响应将如下所示
-
使用上面检索到的设置,添加
readonly: true
选项以将其标记为只读 -
或者,可以使用以下方法删除存储库
response = client.snapshot.delete_repository( repository: 'my-repo' ) puts response
DELETE _snapshot/my-repo
响应将如下所示
{ "acknowledged": true }
此时,只有主(当前)集群将存储库标记为可写。但是,Elasticsearch 将其视为损坏,因此让我们重新创建它,以便 Elasticsearch 可以恢复使用它。请注意,现在我们正在配置主(当前)集群
-
获取存储库的配置并保存其配置,因为我们将使用它来重新创建存储库
response = client.snapshot.get_repository( repository: 'my-repo' ) puts response
GET _snapshot/my-repo
-
使用我们上面获得的配置,让我们重新创建存储库
PUT _snapshot/my-repo { "type": "s3", "settings": { "bucket": "repo-bucket", "client": "elastic-internal-71bcd3", "base_path": "myrepo" } }
响应将如下所示
{ "acknowledged": true }