ElasticSearch 7跨服务器迁移索引:快照恢复异常咨询
Elasticsearch v7跨独立服务器快照迁移解决方案
问题原因
直接从服务器1复制快照文件到服务器2的仓库目录后,服务器2的Elasticsearch集群未感知到新的快照元数据,因此无法识别foo1快照。
修正后的操作步骤
- 停止服务器2的Elasticsearch服务(避免仓库写入操作干扰)
- 清理服务器2仓库目录原有内容:删除
/snapshots/foo下footest相关的所有文件(包括快照子目录、index.latest等元数据文件),防止元数据冲突 - 完整复制服务器1仓库内容:将服务器1
/snapshots/foo下的所有文件(含隐藏文件、元数据文件)完整复制到服务器2的/snapshots/foo目录,确保文件权限与原服务器一致(需赋予elasticsearch用户读写权限) - 重启服务器2的Elasticsearch服务
- 触发仓库快照元数据刷新:执行命令让ES重新扫描仓库内的快照:
POST /_snapshot/foo/_verify
或使用同步命令:
POST /_snapshot/foo/_sync
- 确认快照存在:执行查询命令查看仓库内的快照列表:
GET /_snapshot/foo/_all
此时应能看到foo1快照
7. 执行恢复操作:重新运行恢复命令:
POST /_snapshot/foo/foo1/_restore { "indices": "foo" }
关键注意事项
- 两台服务器的Elasticsearch版本必须完全一致,跨版本快照恢复大概率失败
- 复制文件时需确保所有元数据文件(如
index.latest、snapshot-foo1.dat等)完整复制,不能遗漏 - 服务器2的仓库目录权限必须正确,elasticsearch用户需拥有该目录的读写权限
内容的提问来源于stack exchange,提问作者Marc
相关产品推荐
相关产品推荐

