使用snapshot方式迁移es数据
版本兼容性:快照包含索引的数据结构,所以只能还原到可以兼容索引结构的es版本
- 在5.x中创建的索引快照可以恢复到6.x
- 在2.x中创建的索引快照可以恢复到5.x
- 在1.x中创建的索引快照可以恢复到2.x
如果两个es版本无法兼容,但是http可以通信,可以使用reindex-from-remote方式,使用api远程reindex,但是如果数据量大,可能要比较久。
源es集群中创建repository
可以先记录一下当前的数据量
GET /_cat/indices?v
先在elasticsearch.yml中设置仓库路径,然后重启
path.repo: ["/repo"]
使用http api创建repository
PUT /_snapshot/my_test_repo
{
"type": "fs",
"settings": {
"location": "/repo",
"compres":true
}
}
创建快照
调用api 在仓库中创建快照
PUT /_snapshot/my_test_repo/snapshot_20200831?wait_for_completion=true
不指定索引的情况下,是创建所有索引的快照(包括系统使用的索引)
指定索引的写法,索引可以写多个,用逗号分隔
PUT /_snapshot/my_test_repo/snapshot_20200831_2?wait_for_completion=true
{
"indices": "index1,index2",
"include_global_state": false
}
有可能504 超时,看日志里面继续跑没有异常就可以了
日志路径一般在 logs/{集群名称}.log
[2020-08-31T18:16:27,639][INFO ][o.e.s.SnapshotsService ] [CqSCISw] snapshot [my_test_repo:snapshot_20200831/3h7E4gCsSAeoyTH3DlCwJg] started
[2020-08-31T18:18:28,911][INFO ][o.e.s.SnapshotsService ] [CqSCISw] snapshot [my_test_repo:snapshot_20200831/3h7E4gCsSAeoyTH3DlCwJg] completed with state [SUCCESS]
恢复备份
将备份的快照文件,复制到目标集群的快照路径(目标集群也要建快照仓库),使用indices指定恢复的索引名称,可以多个用逗号进行分隔
目标集群中不能有同名索引
POST /_snapshot/my_test_repo_dest/snapshot_20200831/_restore
{
"indices":"index1,index2",
"include_global_state":false
}
返回以下,就是成功的
{
"accepted": true
}
可以用 和一开始源集群的核对下 数据量是否正确(存储大小不一样是正常的)
GET /_cat/indices?v