用户自建ES集群<多节点>如何通过snapshot+cos的方式实现数据到腾讯云ES的迁移恢复
使用COS进行数据迁移使用场景也非常多。通过上一小结的理解,我想大家更理解了这个工具的使用诀窍。同时我们知道,COS是腾讯云给用户来提供云存储的一款产品,我们的云上ES默认就内部集成了这些插件,但是如果是用户自建的集群,用户如果要使用COS就需要安装针对用户对应的ES版本的COS插件,腾讯云的Es-Cos插件官方链接如下:
用户可以到这里去获取相应ES版本的插件,但是目前该站的COS插件不是特别多,用户可以通过工单的方式获取匹配的COS插件
COS插件的功能:
直接可以将用户自建集群上将快照文件备份到Cos bucket里。然后去对端执行恢复即可。
1,COS插件的安装
同样,以ES7.2 3个节点为集群 实现数据的COS存储与恢复,步骤如下:
第一步:获取对应ES版本的插件
第二步:授权ES启动账号elastic对该插件文件的所有权限
授权插件
第三步:切换到普通用户下,安装插件,重启ES服务。注意:集群每个节点都要操作
执行此命令: bin/elasticsearch-plugin install file:///path/repository-cos.zip 如下:
安装COS插件
装完后,我们可以去kibana上通过get _cat/plugins 查看一下,如下
确认插件安装成功
2:在本地集群上注册COS仓库
id 和 secret 必须要是api密钥,不能是项目密钥;
创建仓库
3:在本地仓库创建快照文件,发现快照自动到COS里去了,可以使用put _snapshot/仓库名/快照名的方式执行快照
PUT /_snapshot/my_cos_backup/snapshot_3?wait_for_completion=true
仓库快照
4:在腾讯云ES上同样注册一个仓库,注意:目标ES集群也要注册仓库。仓库名可以不一样
5:在云ES,针对之前存在COS里的快照进行恢复。 使用命令如下:
POST _snapshot/仓库名/快照名/_restore 同样,注意索引名如果存在就回报数据冲突的错。这里就不再细说。
rename_pattern:这里要对重复索引值 重命名,不然回复快照会报数据冲突
POST /_snapshot/my_cos_backup_22data/snapshot_1012/_restore?wait_for_completion=true
{
"indices": "*",
"ignore_unavailable": true,
"include_global_state": false,
"rename_pattern": ".monitor(.+)|.kibana_(.+)",
"rename_replacement": "backup_test22_$0",
"include_aliases":false
}
-------- 后续发现问题---------
不知道什么原因,原es集群安装cos插件 之后 服务并发高了变的 非常卡,删掉插件就恢复了。
可能是因为快照文件 对新数据进行实时同步导致的。新建快照备份之后,建议删除快照。
------ 后续补充----------
如果es中有用到 索引别名的话,需要单独配置
GET /_aliases
POST /_aliases
{
"actions": [
{
"add": { //为索引nrmp_question_v7建立别名nrmp_question
"index": "nrmp_question_v7",
"alias": "nrmp_question"
}
},
{
"add": { //为索引nrmp_question_point_v3建立别名nrmp_question_point
"index": "nrmp_question_point_v3",
"alias": "nrmp_question_point"
}
},
{
"add": { //为索引nrmp_question_point_v3建立别名nrmp_question_v1
"index": "nrmp_question_point_v3",
"alias": "nrmp_question_v1"
}
}
]
}
其他命令:
查看快照:GET /_snapshot/my_cos_backup_22data
查看索引: GET /_cat/indices
查看插件:GET /_cat/plugins