阿里云ElasticSearch跨集群备份恢复实践
- 背景
- 操作流程
- 创建OSS引用仓库
- 查看引用实例的快照信息
- 通过快照还原指定索引数据
- 新建快照
- 还原索引数据
- 注意
背景
在ES跨大版本升级以及ES实例数据切换场景下可依托于阿里云elasticsearch-repository-oss插件实现跨实例间的ES数据备份与恢复。
前提条件:
- 相同地域
- 归属于相同账号。
- 源端实例的版本低于或等于目标端实例的版本。
- 如果源端和目标端实例的版本都是商业版6.7.0,请确保两个实例的内核版本都是最新或者目标端的内核版本比源端高。
操作流程
创建OSS引用仓库
1.打开阿里云Elasticsearch控制台。
2.在左侧导航栏,点击ES实例。
3.进入目标实例。
- 点击左侧菜单栏的数据备份菜单
- 在跨集群OSS仓库设置区域,单击立即创建。
- 点击创建OSS引用仓库,选择要引用的源端实例
- 添加成功后会在目标实例显示引用的源端实例ID和生成一个引用仓库名称,以及引用仓库状态
查看引用实例的快照信息
1.登录目标端实例的kibana控制台,点击开发者工具
2.在Console中执行以下命令查看引用实例仓库中的所有快照信息
GET /_cat/snapshots/<引用仓库名称>?v
通过快照还原指定索引数据
新建快照
如果实例自动创建的快照时间差较大,可先将要恢复的索引写入停掉后创建最新快照
- 设置源实例索引不允许写入
PUT /<index_name>/_settings
{"index.blocks.write": true
}
- 在源实例创建快照
--可以传入多个索引
PUT _snapshot/aliyun_auto_snapshot/<snapshot_name>
{"indices": "<index_name>"
}
还原索引数据
- 目标实例查看快照
GET /_cat/snapshots/<引用仓库名称>?v
- 目标实例还原快照
-- 可以传入多个索引
POST _snapshot/<oss引用集地址>/<snapshot_name>/_restore
{"indices": "index_name"
}
- 等待索引运行状况变为green代表还原完成
注意
如果索引恢复时,没有停掉源实例索引写入,要有补偿机制,针对数据备份过程中产生的差异数据,需要做补偿机制,另外关闭索引写入功能要搭配应用侧重试机制使用。