首页/数据/NoSQL 速查/注册快照仓库 _snapshot
Elasticsearch89 条

注册快照仓库 _snapshot

快照需要先在每个节点可见的共享存储上注册仓库(fs 类型),路径必须在 elasticsearch.yml 的 path.repo 白名单内;注册后可用 _verify 验证连通性。

NoSQL 速查数据更新于 2026-10-13

快照仓库是什么

快照要先在集群里注册一个仓库,之后才能往里写快照。仓库是「每个节点都能看到的共享位置」的抽象:fs 类型对应挂载的共享文件系统,S3、GCS、Azure 对应对象存储插件。注册时声明的路径必须落在 elasticsearch.yml 的 path.repo 白名单内,否则注册会被拒绝,这是最常见的失败原因。

基本信息

接口PUT /_snapshot/<repo> 注册、POST /_snapshot/<repo>/_verify 校验、GET /_snapshot/_all 列出
fs 类型要求共享文件系统挂载到所有节点同一路径,且已写入 path.repo
其他类型S3 / GCS / Azure 等需要对应插件与访问凭证
常用设置location、compress、max_restore_bytes_per_sec、chunk_size
权限要求需要集群管理权限

典型使用场景

  • 搭建定期备份:业务索引每日做一次快照
  • 升级或变更前留退路,确认仓库可写、快照可恢复
  • 跨集群迁移:源集群做快照,目标集群注册同一仓库后恢复
  • 归档冷数据:老索引快照后删除索引释放磁盘
  • 定期恢复演练,验证备份真的可用

注册与校验

注册与校验
# 1. 注册 fs 仓库,路径必须在 path.repo 白名单内
PUT /_snapshot/my_backup
{
  "type": "fs",
  "settings": {
    "location": "/mnt/backups/es",
    "compress": true,
    "max_restore_bytes_per_sec": "200mb"
  }
}

# 2. 校验连通性:任一节点不可读写都会失败
POST /_snapshot/my_backup/_verify

# 3. 列出已注册仓库及其中的快照
GET /_snapshot/_all
GET /_snapshot/my_backup/_all

# 4. 不再使用时可删除仓库(确认无快照依赖后再执行)
DELETE /_snapshot/my_backup

注册失败对照

报错关键词含义处理方向
mismatched path / not in path.repo仓库路径不在白名单内补上 path.repo 并滚动重启节点
repository_exception 连接或读写失败某个节点无法访问该位置检查挂载点、目录权限与网络连通
repository already registered同一路径已被其他集群注册为每个集群分配独立子目录
invalid repository name仓库名含非法字符只用小写字母、数字与下划线
用 NFS 做共享仓库要确认所有数据节点都能挂载并读写同一路径;把仓库指向某个节点的本地目录时,该节点故障会连同快照一起丢失,实质上不构成备份。

易错点

  • path.repo 未配置就直接注册仓库会报路径不匹配错误,而这个配置修改需要重启节点,生产环境只能用滚动重启
  • 同一个仓库路径被两个集群注册会导致快照损坏,多集群共用存储时必须各自使用独立子目录
  • 把 fs 仓库指向单节点的本地盘,节点故障时快照与数据一起丢,失去备份意义
  • 注册成功不等于可用:必须用 _verify 或实际做一次恢复演练,权限与容量问题往往在真正恢复时才暴露

数据来源与参考

  • Elasticsearch Guide: Register a snapshot repository
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌