使用snapshot方式迁移es数据

本文详细介绍了如何使用 Elasticsearch 的 Snapshot 功能进行数据迁移和恢复。内容涉及版本兼容性、创建仓库、创建快照、恢复备份的步骤,并强调了在不同版本间恢复需要注意的事项。此外,还提到了当版本不兼容时,可以使用 reindex-from-remote 方法进行数据迁移。
摘要由CSDN通过智能技术生成

使用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

参考资料

Snapshot And Restore

reindex-from-remote

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值