--- title: "仓库不存在 (repository_missing_exception) 错误排查与解决" date: 2026-01-01 lastmod: 2026-01-01 description: "repository_missing_exception 表示尝试访问的快照仓库不存在,通常由仓库名称拼写错误、仓库未创建或仓库被删除引起。" tags: ["快照", "仓库"] summary: "为什么这个错误发生 # repository_missing_exception 表示尝试访问的快照仓库不存在。 这个错误可能由以下原因引起: 仓库名称拼写错误:请求中的仓库名称输入错误 仓库未创建:仓库尚未被创建 仓库被删除:仓库已被删除但客户端仍在引用 大小写不匹配:仓库名称区分大小写 集群重启后丢失:临时配置的仓库在重启后丢失 如何修复这个错误 # 1. 列出所有仓库 # # 查看所有已注册的仓库 GET /_snapshot?verbose # 或使用简洁格式 GET /_cat/repositories?v 2. 验证仓库名称 # # 确认仓库名称拼写正确 # 仓库名称区分大小写 GET /_snapshot/<repository_name>?verbose 3. 创建仓库 # # 创建文件系统仓库 PUT /_snapshot/<repository_name> { "type": "fs", "settings": { "location": "/path/to/backup" } } # 创建共享文件系统仓库 PUT /_snapshot/<repository_name> { "type": "fs", "settings": { "location": "/mount/shared_backup" } } # 创建 S3 仓库(需要插件) PUT /_snapshot/<repository_name> { "type": "s3", "settings": { "bucket": "my-backup-bucket", "region": "us-east-1" } } 4." --- ## 为什么这个错误发生 `repository_missing_exception` 表示尝试访问的快照仓库不存在。 这个错误可能由以下原因引起: 1. **仓库名称拼写错误**:请求中的仓库名称输入错误 2. **仓库未创建**:仓库尚未被创建 3. **仓库被删除**:仓库已被删除但客户端仍在引用 4. **大小写不匹配**:仓库名称区分大小写 5. **集群重启后丢失**:临时配置的仓库在重启后丢失 ## 如何修复这个错误 ### 1. 列出所有仓库 ```bash # 查看所有已注册的仓库 GET /_snapshot?verbose # 或使用简洁格式 GET /_cat/repositories?v ``` ### 2. 验证仓库名称 ```bash # 确认仓库名称拼写正确 # 仓库名称区分大小写 GET /_snapshot/?verbose ``` ### 3. 创建仓库 ```bash # 创建文件系统仓库 PUT /_snapshot/ { "type": "fs", "settings": { "location": "/path/to/backup" } } # 创建共享文件系统仓库 PUT /_snapshot/ { "type": "fs", "settings": { "location": "/mount/shared_backup" } } # 创建 S3 仓库(需要插件) PUT /_snapshot/ { "type": "s3", "settings": { "bucket": "my-backup-bucket", "region": "us-east-1" } } ``` ### 4. 验证仓库 ```bash # 验证仓库配置 POST /_snapshot//_verify ``` ### 5. 检查配置文件 ```bash # 确保仓库配置在配置文件中(如果使用文件配置) # easysearch.yml path.repo: ["/mnt/backup", "/mount/backup"] ``` ### 6. 重启节点(如果修改了配置文件) ```bash # 修改配置文件后需要重启节点 sudo systemctl restart easysearch ``` ### 7. 注册共享文件系统 ```bash # 使用共享文件系统仓库 PUT /_snapshot/ { "type": "fs", "settings": { "location": "/mount/backups" } } ``` ### 8. 检查目录权限 ```bash # 确保目录存在且有正确权限 mkdir -p /path/to/backup chown -R easysearch:easysearch /path/to/backup chmod 750 /path/to/backup ``` ### 9. 使用索引模板 ```bash # 对于快照策略,使用 SLM PUT /_slm/policy/ { "schedule": "0 0 2 * * ?", "name": "", "repository": "", "config": { "indices": ["*"] } } ``` ### 10. 查看快照列表 ```bash # 创建仓库后查看快照列表 GET /_snapshot//_all ``` ### 预防措施 - 在创建快照前确保仓库已创建 - 使用统一的仓库命名规范 - 在配置文件中配置 path.repo - 定期验证仓库状态 - 使用 SLM 自动化快照管理 - 在生产环境使用持久化配置 - 为不同的业务使用不同的仓库 - 监控仓库存储空间使用