背景:
项目需要,ES集群需要升级,旧集群版本为6、新版本为7,且旧版本由于历史原因存在较多坑,所以计划新建集群,最后通过数据迁移完成数据同步
具体的集群搭建就不在这里描述了,这里仅介绍ES的数据迁移
操作如下:
1、查看集群状态
curl -XGET IP:port/_cluster/health?v
curl -XGET IP:port/_cat/shards?v
curl -XGET IP:port/_cat/indices?v
2、添加备份路径
修改ES的配置文件,添加:
path.repo: ["/data/bak"]
#若是有个nas可以同时挂载在新老集群的机器就可以省略后面的数据传输步骤
3、重启旧集群ES服务
4、创建备份仓库(旧集群上操作)
#指定镜像存储路径
curl -XPUT http://ip:port/_snapshot/my_bak -H 'content-Type:application/json' -d '
{
"type": "fs",
"settings": {
"location": "/data/bak",
"compress": true
}
}'
#返回true表示成功
{"acknowledged":true}
#查看仓库
curl -XGET http://ip:port/_snapshot/my_bak?pretty
#正确输出应该如下:
{
"my_bak": {
"type": "fs"
"settings": {
"commpress": true
"location": "/data/bak"
}
}
}
#备份指定索引的数据,不带参数默认备份所有
curl -XPUT http://ip:port/_snapshot/my_bak/snapshot_20211206 -H 'content-Type:application/json' -d '
{
"indices": "indices1,indices2"
}'
#查看快照详细信息,当所有的索引状态都为DONE时,在新集群那边查看才会有快照信息
curl -XGET http://ip:port/_snapshot/my_bak/snapshot_20211206/_status?pretty
#查看所有快照
curl -XGET http://ip:port/_snapshot/my_bak/_all?pretty
5、数据传输
将旧集群主机/data/bak下的数据传输到新集群的相同目录下。不同也行,注意配置时路径写对即可
6、新集群数据导入(新集群操作)
#执行如下命令新建备份仓库
curl -XPUT http://ip:port/_snapshot/my_bak -H 'content-Type:application/json' -d '
{
"type": "fs"
"settings": {
"commpress": true
"location": "/data/bak"
}
}'
#导入数据
curl -XPOST http://ip:port/_snapshot/my_bak/snapshot_20211206/_restore
#若不是首次导入,也就是之前导入过一次,这次是增量回复,则需要先close索引再导入。导入完索引自动恢复,无需其他操作
curl -XPOST http://ip:port/indices_name/_close
#查看导入进度
curl -XGET http://ip:port/_cat/recovery/_all?v
#导入结束在新旧集群查看索引数据、大小、分片等信息是否一致
其他
索引其他的基础操作
查看
分片情况:curl -XGET IP:port/_cat/shards?v
健康状况:curl -XGET IP:port/_ cluster/health?v
主节点:curl -XGET IP:port/_cat/master?v
所有节点:curl -XGET IP:port/_cat/nodes?v
所有索引:curl -XGET IP:port/_cat/indices?v
删除:
curl -XDELETE IP:port/*test #删除以test结尾的索引