验证仓库完整性 API

编辑

验证快照仓库内容的完整性。

resp = client.snapshot.repository_verify_integrity(
    name="my_repository",
)
print(resp)
const response = await client.snapshot.repositoryVerifyIntegrity({
  name: "my_repository",
});
console.log(response);
POST /_snapshot/my_repository/_verify_integrity

请求

编辑

POST /_snapshot/<仓库>/_verify_integrity

先决条件

编辑
  • 如果启用了 Elasticsearch 安全功能,您必须具有 manage 集群权限 才能使用此 API。有关详细信息,请参阅 安全权限

描述

编辑

此 API 允许您对仓库的内容执行全面检查,查找其数据或元数据中的任何异常,这些异常可能会阻止您从仓库恢复快照,或可能导致未来的快照创建或删除操作失败。

如果您怀疑某个快照仓库内容的完整性,请立即停止对该仓库的所有写入活动,将其 read_only 选项设置为 true,并使用此 API 验证其完整性。在您执行此操作之前,

  • 可能无法从该仓库 恢复某些快照
  • 可搜索快照 在搜索时可能会报告错误,或者可能具有未分配的分片。
  • 向此仓库 创建快照 可能会失败,或者可能会显示成功,但创建的快照无法恢复。
  • 从该仓库 删除快照 可能会失败,或者可能会显示成功,但磁盘上仍保留基础数据。
  • 当仓库处于无效状态时继续写入仓库可能会对其内容造成额外损坏。

如果 验证仓库完整性 API 发现您的仓库内容存在任何问题,Elasticsearch 将无法修复损坏。在内容损坏后,使仓库恢复到完全正常工作状态的唯一方法是从损坏发生之前创建的 仓库备份 中恢复其内容。您还必须查明导致损坏的原因,并采取措施防止再次发生。

如果您无法恢复仓库备份,请 注册一个新的仓库 并将其用于所有未来的快照操作。在某些情况下,可以通过 恢复 所需的尽可能多的快照并 创建 恢复数据的新的快照,或者通过使用 Reindex API 从损坏的仓库中挂载的任何 可搜索快照 中复制数据,来恢复损坏仓库的某些内容。

验证仓库完整性 API 运行时,避免所有写入仓库的操作。如果在完整性验证运行时某些操作更改了仓库内容,则由于并发写入,Elasticsearch 可能会错误地报告检测到其内容中的某些异常。它也可能错误地未能报告并发写入阻止其检测到的某些异常。

此 API 旨在供人类进行探索性使用。您应该预期请求参数和响应格式在未来版本中会有所不同。

此 API 可能在混合版本集群中无法正常工作。

路径参数

编辑
<仓库>
(必需,字符串)要验证其完整性的快照仓库的名称。

查询参数

编辑

此 API 的参数的默认值旨在限制完整性验证对集群中其他活动的影响。例如,默认情况下,它最多只使用一半的 snapshot_meta 线程来验证每个快照的完整性,允许其他快照操作使用此线程池的另一半。

如果您修改这些参数以加快验证过程,您可能会扰乱集群中的其他快照相关操作。对于大型仓库,请考虑设置一个单独的单节点 Elasticsearch 集群,专门用于运行完整性验证 API。

snapshot_verification_concurrency
(可选,整数)指定要并发验证的快照数。默认为 0,表示一次最多使用一半的 snapshot_meta 线程池。
index_verification_concurrency
(可选,整数)指定要并发验证的索引数。默认为 0,表示使用整个 snapshot_meta 线程池。
meta_thread_pool_concurrency
(可选,整数)指定要并发执行的最大快照元数据操作数。默认为 0,表示一次最多使用一半的 snapshot_meta 线程池。
index_snapshot_verification_concurrency
(可选,整数)指定在每次索引验证中要并发验证的最大索引快照数。默认为 1
max_failed_shard_snapshots
(可选,整数)限制在完整性验证期间跟踪的分片快照失败次数,以避免过度使用资源。如果您的仓库包含的分片快照失败次数超过此值,则验证将失败。默认为 10000
verify_blob_contents
(可选,布尔值)指定是否验证仓库中每个数据 blob 的校验和。默认为 false。如果启用此功能,Elasticsearch 将读取整个仓库内容,这可能非常慢且成本很高。
blob_thread_pool_concurrency
(可选,整数)如果 ?verify_blob_contentstrue,则此参数指定一次要验证的 blob 数。默认为 1
max_bytes_per_sec
(可选,大小单位)如果 ?verify_blob_contentstrue,则此参数指定 Elasticsearch 每秒从仓库读取的最大数据量。默认为 10mb

响应正文

编辑

响应公开了分析的实现细节,这些细节可能会因版本而异。因此,响应正文格式被认为不稳定,并且在较新的版本中可能会有所不同。

log

(数组)报告分析进度的对象序列。

log 的属性
timestamp_in_millis
(整数)此日志条目的时间戳,表示自 Unix 纪元 以来的毫秒数。
timestamp
(字符串)此日志条目的时间戳,表示为根据 ISO 8601 格式化的字符串。仅当设置了 ?human 标志时才包含。
snapshot
(对象)如果日志条目与特定快照相关,则此对象中将描述快照。
index
(对象)如果日志条目与特定索引相关,则此对象中将描述索引。
snapshot_restorability
(对象)如果日志条目与索引的可恢复性相关,则此对象中将描述详细信息。
anomaly
(字符串)如果日志条目与仓库内容中的异常相关,则此字符串将描述该异常。
exception
(对象)如果日志条目与 Elasticsearch 在验证期间遇到的异常相关,则此对象中将包含详细信息。
results

(对象)一个描述分析最终结果的对象。

results 的属性
status
(对象)分析任务的最终状态。
final_repository_generation
(整数)分析结束时的仓库生成。如果在分析期间对仓库进行了任何写入操作,则此值将与任务状态中报告的 generation 不同,并且由于并发写入,分析可能检测到虚假的异常,甚至可能未能检测到仓库内容中的某些异常。
total_anomalies
(整数)分析期间检测到的异常总数。
result
(字符串)分析的最终结果。如果仓库内容看起来完好无损,则此字符串将为 pass。如果此字段缺失或包含其他值,则未完全验证仓库内容。
exception
(对象)如果分析遇到阻止其成功完成的异常,则此处将报告此异常。