📣 极限科技诚招搜索运维工程师(Elasticsearch/Easysearch)- 全职/北京 👉 : 立即申请加入

为什么这个错误发生 #

snapshot_creation_exception 表示创建快照操作完全失败。这与单个分片快照失败不同,这是整个快照创建过程的失败。

这个错误可能由以下原因引起:

  1. 仓库配置错误:快照仓库配置不正确或无法访问
  2. 权限问题:没有访问仓库的权限
  3. 存储空间不足:仓库存储空间不足
  4. 网络问题:无法连接到远程仓库
  5. 索引状态异常:索引处于关闭或不可用状态
  6. 并发快照冲突:同时创建多个快照导致冲突
  7. 主节点变更:快照过程中主节点变更
  8. 超时:快照创建时间超过超时限制

如何修复这个错误 #

1. 检查快照状态 #

# 查看快照状态
GET /_snapshot/<repository>/<snapshot-name>/_status

# 查看所有快照
GET /_snapshot/<repository>/_all

2. 验证仓库配置 #

# 查看仓库配置
GET /_snapshot/<repository>?verbose

# 验证仓库
POST /_snapshot/<repository>/_verify

3. 检查存储权限和空间 #

# 对于文件系统仓库,检查目录权限
ls -la /path/to/snapshot/repository

# 检查磁盘空间
df -h

# 确保 Easysearch 进程有读写权限
chown -R easysearch:easysearch /path/to/snapshot/repository

4. 检查索引状态 #

# 查看索引状态
GET /_cat/indices?v

# 确保索引是打开状态
POST /<index>/_open

5. 删除失败的快照 #

# 删除失败的快照
DELETE /_snapshot/<repository>/<snapshot-name>

6. 重新创建快照 #

# 重新创建快照
PUT /_snapshot/<repository>/<snapshot-name>?wait_for_completion=true
{
  "indices": "<index>",
  "ignore_unavailable": true,
  "include_global_state": false
}

7. 处理并发快照 #

# 查看正在进行的快照
GET /_snapshot/<repository>/_status

# 等待当前快照完成后再创建新的
GET /_snapshot/<repository>/<snapshot-name>?wait_for_completion=true

8. 增加超时时间 #

# 设置更长的超时时间
PUT /_snapshot/<repository>/<snapshot-name>?wait_for_completion=true&timeout=30m
{
  "indices": "<index>"
}

9. 分批创建快照 #

# 对多个索引分别创建快照
PUT /_snapshot/<repository>/snap-logs-<date>?wait_for_completion=true
{
  "indices": "logs-*"
}

PUT /_snapshot/<repository>/snap-metrics-<date>?wait_for_completion=true
{
  "indices": "metrics-*"
}

10. 检查仓库连接(远程仓库) #

# 对于 S3、HDFS 等远程仓库,检查连接
# 查看节点日志
tail -f /path/to/easysearch/logs/easysearch.log | grep -i snapshot

# 验证网络连接
ping <s3-endpoint>

11. 排除问题索引 #

# 排除有问题的索引
PUT /_snapshot/<repository>/<snapshot-name>
{
  "indices": "<index1>,<index2>",
  "ignore_unavailable": true
}

12. 检查主节点状态 #

# 确保集群有稳定的主节点
GET /_cat/master?v

# 检查集群健康
GET /_cluster/health

预防措施 #

  • 在非高峰时段创建快照
  • 定期验证仓库状态和连接
  • 监控仓库存储空间使用情况
  • 使用 SLM(快照生命周期管理)自动化快照管理
  • 为不同的业务使用不同的仓库
  • 测试快照恢复过程确保快照可用
  • 设置合理的快照保留策略
  • 使用增量快照减少快照时间
  • 监控快照操作的状态