从快照恢复
edit从快照恢复
editElasticsearch 使用快照在集群外部存储数据的副本。您可以恢复快照以恢复在集群中没有分片副本的索引和数据流。这种情况可能发生在数据(索引或数据流)被删除,或者集群成员发生变化,系统中的当前节点不再包含数据的副本时。
恢复丢失的数据需要您拥有受影响的索引和数据流的备份,并且该备份足够新以满足您的使用场景。请在确认这一点后再继续操作。
为了恢复缺失数据的索引和数据流:
使用 Kibana
- 登录到 Elastic Cloud 控制台。
-
在Elasticsearch Service面板上,点击您的部署名称。
如果您的部署名称被禁用,您的 Kibana 实例可能不健康,在这种情况下,请与 Elastic 支持 联系。如果您的部署不包含 Kibana,您需要做的就是 首先启用它。
-
打开您的部署的侧边导航菜单(位于左上角的Elastic标志下方),然后转到开发工具 > 控制台。
-
要使用cat indices API查看受影响的索引。
GET _cat/indices?v&health=red&h=index,status,health
响应将会是这样的:
index status health .ds-my-data-stream-2022.06.17-000001 open red kibana_sample_data_flights open red
上述索引的
红色健康状态表示这些索引缺少主分片,意味着它们缺少数据。 -
为了恢复数据,我们需要找到包含这两个索引的快照。要找到这样的快照,请使用获取快照API。
GET _snapshot/my_repository/*?verbose=false
响应将会是这样的:
{ "snapshots" : [ { "snapshot" : "snapshot-20200617", "uuid" : "dZyPs1HyTwS-cnKdH08EPg", "repository" : "my_repository", "indices" : [ ".apm-agent-configuration", ".apm-custom-link", ".ds-ilm-history-5-2022.06.17-000001", ".ds-my-data-stream-2022.06.17-000001", ".geoip_databases", ".kibana-event-log-8.2.2-000001", ".kibana_8.2.2_001", ".kibana_task_manager_8.2.2_001", "kibana_sample_data_ecommerce", "kibana_sample_data_flights", "kibana_sample_data_logs" ], "data_streams" : [ ], "state" : "SUCCESS" } ], "total" : 1, "remaining" : 0 } -
快照
snapshot-20200617包含我们想要恢复的两个索引。 您可能会有多个快照,您可以从这些快照中恢复目标索引。选择最新的快照。 -
现在我们已经找到了一个快照,我们将继续准备数据流以恢复丢失的数据。我们将检查索引元数据,看看是否有任何索引是数据流的一部分:
GET kibana_sample_data_flights,.ds-my-data-stream-2022.06.17-000001?features=settings♭_settings
响应将会是这样的:
{ ".ds-my-data-stream-2022.06.17-000001" : { "aliases" : { }, "mappings" : { }, "settings" : { "index.creation_date" : "1658406121699", "index.hidden" : "true", "index.lifecycle.name" : "my-lifecycle-policy", "index.number_of_replicas" : "1", "index.number_of_shards" : "1", "index.provided_name" : ".ds-my-data-stream-2022.06.17-000001", "index.routing.allocation.include._tier_preference" : "data_hot", "index.uuid" : "HmlFXp6VSu2XbQ-O3hVrwQ", "index.version.created" : "8020299" }, "data_stream" : "my-data-stream" }, "kibana_sample_data_flights" : { "aliases" : { }, "mappings" : { }, "settings" : { "index.creation_date" : "1655121541454", "index.number_of_replicas" : "0", "index.number_of_shards" : "1", "index.provided_name" : "kibana_sample_data_flights", "index.routing.allocation.include._tier_preference" : "data_content", "index.uuid" : "jMOlwKPPSzSraeeBWyuoDA", "index.version.created" : "8020299" } } }上面的响应显示
kibana_sample_data_flights不是数据流的一部分,因为它在设置中没有名为data_stream的字段。相反,
.ds-my-data-stream-2022.06.17-000001是名为my-data-stream的数据流的一部分。当你找到这样的索引时,它属于一个数据流,你需要检查数据是否仍在被索引。你可以通过检查settings来确认,如果你能找到这个属性:"index.lifecycle.indexing_complete" : "true",这意味着在这个索引中的索引已经完成,你可以继续下一步。如果
index.lifecycle.indexing_complete不存在或配置为false,您需要滚动数据流,以便可以在不阻塞新数据摄取的情况下恢复丢失的数据。以下命令将实现这一点。POST my-data-stream/_rollover
-
现在数据流准备已经完成,我们将使用关闭索引 API来关闭目标索引。
POST kibana_sample_data_flights,.ds-my-data-stream-2022.06.17-000001/_close
您可以使用cat indices API确认它们已关闭。
GET _cat/indices?v&health=red&h=index,status,health
响应将会是这样的:
index status health .ds-my-data-stream-2022.06.17-000001 close red kibana_sample_data_flights close red
-
索引已关闭,现在我们可以使用恢复快照API从快照中恢复它们,而不会引起任何复杂情况:
有关创建和恢复快照的更多指导,请参阅本指南。
为了恢复缺少分片的索引:
-
使用cat indices API查看受影响的索引。
GET _cat/indices?v&health=red&h=index,status,health
响应将会是这样的:
index status health .ds-my-data-stream-2022.06.17-000001 open red kibana_sample_data_flights open red
上述索引的
红色健康状态表示这些索引缺少主分片,意味着它们缺少数据。 -
为了恢复数据,我们需要找到包含这两个索引的快照。要找到这样的快照,请使用获取快照API。
GET _snapshot/my_repository/*?verbose=false
响应将会是这样的:
{ "snapshots" : [ { "snapshot" : "snapshot-20200617", "uuid" : "dZyPs1HyTwS-cnKdH08EPg", "repository" : "my_repository", "indices" : [ ".apm-agent-configuration", ".apm-custom-link", ".ds-ilm-history-5-2022.06.17-000001", ".ds-my-data-stream-2022.06.17-000001", ".geoip_databases", ".kibana-event-log-8.2.2-000001", ".kibana_8.2.2_001", ".kibana_task_manager_8.2.2_001", "kibana_sample_data_ecommerce", "kibana_sample_data_flights", "kibana_sample_data_logs" ], "data_streams" : [ ], "state" : "SUCCESS" } ], "total" : 1, "remaining" : 0 } -
快照
snapshot-20200617包含我们想要恢复的两个索引。 您可能会有多个快照,您可以从这些快照中恢复目标索引。选择最新的快照。 -
现在我们已经找到了一个快照,我们将继续准备数据流以恢复丢失的数据。我们将检查索引元数据,看看是否有任何索引是数据流的一部分:
GET kibana_sample_data_flights,.ds-my-data-stream-2022.06.17-000001?features=settings♭_settings
响应将会是这样的:
{ ".ds-my-data-stream-2022.06.17-000001" : { "aliases" : { }, "mappings" : { }, "settings" : { "index.creation_date" : "1658406121699", "index.hidden" : "true", "index.lifecycle.name" : "my-lifecycle-policy", "index.number_of_replicas" : "1", "index.number_of_shards" : "1", "index.provided_name" : ".ds-my-data-stream-2022.06.17-000001", "index.routing.allocation.include._tier_preference" : "data_hot", "index.uuid" : "HmlFXp6VSu2XbQ-O3hVrwQ", "index.version.created" : "8020299" }, "data_stream" : "my-data-stream" }, "kibana_sample_data_flights" : { "aliases" : { }, "mappings" : { }, "settings" : { "index.creation_date" : "1655121541454", "index.number_of_replicas" : "0", "index.number_of_shards" : "1", "index.provided_name" : "kibana_sample_data_flights", "index.routing.allocation.include._tier_preference" : "data_content", "index.uuid" : "jMOlwKPPSzSraeeBWyuoDA", "index.version.created" : "8020299" } } }上面的响应显示
kibana_sample_data_flights不是数据流的一部分,因为它在设置中没有名为data_stream的字段。相反,
.ds-my-data-stream-2022.06.17-000001是名为my-data-stream的数据流的一部分。当你找到这样的索引时,它属于一个数据流,你需要检查数据是否仍在被索引。你可以通过检查settings来确认,如果你能找到这个属性:"index.lifecycle.indexing_complete" : "true",这意味着在这个索引中的索引已经完成,你可以继续下一步。如果
index.lifecycle.indexing_complete不存在或配置为false,您需要滚动数据流,以便可以在不阻塞新数据摄取的情况下恢复丢失的数据。以下命令将实现这一点。POST my-data-stream/_rollover
-
现在数据流准备已经完成,我们将使用关闭索引 API来关闭目标索引。
POST kibana_sample_data_flights,.ds-my-data-stream-2022.06.17-000001/_close
您可以使用cat indices API确认它们已关闭。
GET _cat/indices?v&health=red&h=index,status,health
响应将会是这样的:
index status health .ds-my-data-stream-2022.06.17-000001 close red kibana_sample_data_flights close red
-
索引已关闭,现在我们可以使用恢复快照API从快照中恢复它们,而不会引起任何复杂情况:
POST _snapshot/my_repository/snapshot-20200617/_restore { "indices": "kibana_sample_data_flights,.ds-my-data-stream-2022.06.17-000001", "include_aliases": true }<pre class
有关创建和恢复快照的更多指导,请参阅本指南。