终于都要迁移服务器了,像MySQL,Redis这些都容易迁移,但Elasticsearch还是第一个迁移。先去官网看了下资料,步骤说得不是很明白,让人云里雾里的。在网上找了下资料,发现还是比较简单的,我就想把我亲身经历说出来,当一次学习心得。
主要步骤
- 需要迁移Elasticsearch执行注册快照存储库
- 使用http put 请求执行文件快照
- 在新的Elasticsearch上注册快照存储库,copy文件到存储库上
- 使用http 执行还原操作
注册快照存储库
首先在elasticsearch.yml 中添加 path.repo
注册位置,因为es都是非root用户启动,导出的目录必须当前用户能读写,建议目录设置为用户/home/{user}/mybackup,将以下设置添加到 elasticsearch.yml文件
path.repo: ["/home/elast/ecopherebbs"]
重启Elasticsearch
执行http 注册存储库
curl -X PUT "localhost:9200/_snapshot/ecopherebbs" -H 'Content-Type: application/json' -d'
> { "type": "fs",
> "settings": {
> "location": "/home/elast/ecopherebbs"
> }
> }
>
执行后 curl http://localhost:9200/_snapshot
查看结果
{"ecopherebbs":{"type":"fs","settings":{"location":"/home/elast/ecopherebbs"}}}
注册成功
执行快照请求
curl -XPUT http://localhost:9200/_snapshot/ecopherebbs/snapshot_20181029
查看执行快照的结果curl http://localhost:9200/_snapshot/ecopherebbs/snapshot_20181029
{
"snapshots": [{
"snapshot": "snapshot_20181029",
"uuid": "-8T1g-wvT_ai7dIwj3hiIQ",
"version_id": 5040199,
"version": "5.4.1",
"indices": [ "ecopherebbs", "news_index"],
"state": "SUCCESS",
"start_time": "2018-10-29T10:52:11.932Z",
"start_time_in_millis": 1540810331932,
"end_time": "2018-10-29T10:52:12.662Z",
"end_time_in_millis": 1540810332662,
"duration_in_millis": 730,
"failures": [],
"shards": {
"total": 10,
"failed": 0,
"successful": 10
}
}
]
}
还原快照
在新的Elasticsearch elasticsearch.yml 添加path.repo: ["/home/dba/ecopherebbs"]
快照路径,将目录copy到另一台服务器上。
重复上面注册存储库步骤,让新的Elasticsearch成功注册存储库。
执行还原操作curl -XPOST http://localhost:9200/_snapshot/ecopherebbs/snapshot_20181029/_restore
响应{"accepted":true}
还原成功