资讯专栏INFORMATION COLUMN

ElasticSearch索引跨集群迁移

不知名网友 / 3713人阅读
ElasticSearch索引跨集群迁移

点击上方“IT那活儿”公众号,关注后了解更多内容,不管IT什么活儿,干就完了!!!

单索引跨集群迁移:_reindex方式

_reindex方式可将索引数据直接从源ES集群导入到新ES集群。
1. 集群环境
源ES集群地址:xxx.x.xxx.65:9201
新ES集群地址:xxx.x.xxx.214:9201
2. 迁移目标
将索引shsnc-crm_tpt_tj_dtfjzl_data迁移至新ES集群,索引中包含10个文档。
3. 新ES集群添加白名单并重启
1)在新ES集群添加白名单允许源集群reindex
2)添加白名单后重启新ES集群
jps|grep -i elasticsearch|awk {print $1}|xargs kill –-停止新ES集群各节点
./elasticsearch -d --启动新ES集群各节点
4. 创建索引并设置mapping
1)从源ES集群中导出索引模板template_ shsnc-crm_tpt_tj _dtfjzl_data
curl -u xxx.x.xxx.65:9201/_template/template_ shsnc-crm_tpt_tj* >> template.txt
2)在新ES集群中导入索引模板template_ shsnc-crm_tpt_tj _dtfjzl_data
curl -H "Content-Type: application/json"
-XPUT http://xxx.x.XXX.214:9201/_template/template_shsnc-
crm_tpt_tj_dtfjzl_data -d{"order": 0, "index_patterns":
["shsnc-crm_tpt_tj_dtfjzl_data"], "settings": {"index":
{"number_of_shards": "1", "number_of_replicas": "0"}},
"mappings": {"_doc":{"dynamic": false, "properties":
{"appname": {"ignore_above": 10000, "type": "keyword"},
"createTime": {"format": "yyyy-MM-dd HH:mm:ss.SSS", "type": "date"}, "raw_message": {"analyzer": "ik_smart", "type":
"text"}, "startLine": {"ignore_above": 10000, "type":
"keyword"}, "op_time": {"format": "yyyy-MM-dd HH:mm:ss", "type": "date"}, "COUNT": {"ignore_above": 10000, "type":
"keyword"}, "cmdb_id": {"ignore_above": 10000, "type":
"keyword"}, "agentip": {"ignore_above": 10000, "type":
"keyword"}}}}, "aliases": {}}



5. 从源ES集群中reindex数据到新ES集群
注:为确保数据的完整性源ES集群需停止数据写入。
1)在新ES集群上运行如下命令
curl -H Content-Type: application/json
-XPOST "http://xxx.x.xxx.214:9201/_reindex?pretty" -d {
"source": {
"remote": {"host": "http://xxx.x.xxx.65:9201"},
"username": "xxxxxx", --username、password若有则指定,若无则去掉此项
"password": "xxxxxx",
"index": "shsnc-crm_tpt_tj_dtfjzl_data",
"type": "_doc"},
"dest": {"index": "shsnc-crm_tpt_tj_dtfjzl_data"}}
2)执行以上命令后,索引shsnc-crm_tpt_tj_dtfjzl_data的10个文档数据成功导入到新ES集群

全部索引跨集群迁移:_snapshot方式

_snapshot是Elasticsearch提供的用于对数据进行备份和恢复的接口,即从源ES集群创建数据快照,再将快照复制到目标集群进行恢复。
1. 集群环境
源ES集群地址:xxx.x.xxx.65:9201
新ES集群地址:xxx.x.xxx.20:9201
2. 迁移目标
将源ES集群全部索引迁移至新ES集群,主要是红色框中的4个索引。
3. 在源集群中创建repository和snapshot
1)快照文件存放repositor仓库中,一个repositor仓库可以存放多个快照文件,repository支持多种类型,此处以fs类型来创建repository仓库,即将快照文件存放在文件系统中。
如下,在源ES集群的Elasticsearch.yml配置文件中设置repository路径,提前创建“/home/elk/es-repo-test”目录,添加配置后需要重启源ES集群。
2)创建repository
curl -H Content-Type: application/json
-XPUT http://xxx.x.xxx.65:9201/_snapshot/my_backup -d {
"type": "fs",
"settings": {
"location": "/home/elk/es-repo-test",
"compress": true,
"max_snapshot_bytes_per_sec":"20mb",
"max_restore_bytes_per_sec":"20mb"}}

注:

  • max_snapshot_bytes_per_se:快照数据进入仓库时,限流每秒20mb;
  • max_restore_bytes_per_sec:从仓库恢复数据时,限流每秒20mb。
3)创建snapshot,快照名称需小写,否则报错(version:6.4.0)
Curl -H Content-Type: application/json -XPUT
http://xxx.x.xxx.65:9201/_snapshot/my_backup/es-snapshot-1?wait_for_completion=true
进入快照存放的目录,查看快照文件:
4. 在新集群中创建repository,并复制源集群中的snapshot文件
1)在新集群的elasticsearch.yml配置文件中设置repository路径,提前创建“/home/elk/es-repo-test”目录,添加配置后需要重启新ES集群
2)在新集群中创建repostory
curl -H Content-Type: application/json
-XPUT http://xxx.x.xxx.20:9201/_snapshot/my_backup -d {
"type": "fs",
"settings": {
"location": "/home/elk/es-repo-test",
"compress": true,
"max_snapshot_bytes_per_sec":"20mb",
"max_restore_bytes_per_sec":"20mb"}}
3)复制源集群中的snapshot文件到新集群
4. 在新集群中通过快照文件恢复索引
1)从源集群导入索引模板到目标集群
2)在新集群中恢复索引
curl -XPOST http://xxx.x.xxx.20:9201/_snapshot/my_backup/es-snapshot-1/_restore
3)新集群中查看索引恢复的状态
附:提升数据同步的技巧
1)默认情况下reindex使用1000进行批量操作,可在source中修改size以提升批量写入。
2)针对数据量比较大的索引,可以在迁移前将目标索引的副本数设置为0,刷新时间为-1(-1为不刷新),可加快数据同步速度,数据迁移完成后再改回。
3)reindex支持使用sliced scroll功能以提升数据写入的效率,sliced scroll以并行化来重建索引,每个scroll 请求可以分解成多个slice请求,各个slice对立并行运行,写入效率要快很多倍
Slices可手动设置(slices=3),也可自动设置(slices=auto)。设置为auto时,对于单索引,slices等于分片数;针对多索引,slices等于分片的最小值。Slices等于分片数时,查询性能最高效;slices大于分片数时,不仅不会提升效率,反而会增加额外的开销。


本文作者:方 威(上海新炬中北团队)

本文来源:“IT那活儿”公众号

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/129098.html

相关文章

  • 滴滴 Elasticsearch集群架构实践

    摘要:本文给大家分享下滴滴在多集群架构的实践。负责整个集群的元数据管理。任务处理模型,在任务执行完成后,会回调大量处理元数据变更。滴滴平台通过统一管控索引,避免了同一个索引名称出现在连接的多个集群中。 出品 | 滴滴技术作者 |魏子珺 showImg(https://segmentfault.com/img/bVbsMkj?w=1800&h=766); Elasticsearch 是基于 L...

    zengdongbao 评论0 收藏0
  • Elasticsearch snapshot 备份的使用方法

    摘要:常见的数据库都会提供备份的机制,以解决在数据库无法使用的情况下,可以开启新的实例,然后通过备份来恢复数据减少损失。虽然有良好的容灾性,但由于以下原因,其依然需要备份机制。我们今天就着重讲解下第二种备份的方式,即的使用。 常见的数据库都会提供备份的机制,以解决在数据库无法使用的情况下,可以开启新的实例,然后通过备份来恢复数据减少损失。虽然 Elasticsearch 有良好的容灾性,但由...

    Binguner 评论0 收藏0
  • Elasticsearch 参考指南(升级前重新索引

    摘要:要升级包含在中创建的索引的集群,必须在升级到之前重新索引或删除它们。将和重置为旧索引中使用的值。等待索引状态变为。在单个更新别名请求中删除旧索引。当重新索引作业完成时,将和设置为所需的值默认设置是和。 升级前重新索引 Elasticsearch可以读取上一个主要版本中创建的索引,旧的索引必须重新索引或删除。Elasticsearch 6.x可以使用Elasticsearch 5.x中创...

    546669204 评论0 收藏0
  • 400+节点的 Elasticsearch 集群运维

    摘要:截止目前我们选择了不升级集群。有了这么多的分片和节点,集群操作有时变得更特殊。我们相信测试本身导致了集群宕机。和的性能高度依赖于具体的查询和数据,没有银弹。考虑使用缓存,包括外缓存和级别的缓存。 本文首发于InfoQ https://www.infoq.cn/article/... 作者:Anton Hägerstrand翻译:杨振涛 目录: 数据量 版本 节点配置 索引结构 性能 ...

    aikin 评论0 收藏0
  • 让我们ElasticSearch作伴,一起潇洒复习~

    摘要:我们会得到查询语句中根据哪个字段进行聚合,另外每个字段基数会由其他服务进行统计,例如根据字段进行聚合,由于基数过大。如果是针对大基数字段进行聚合查询预估消耗内存较大时,就会把这种查询熔断。 showImg(https://segmentfault.com/img/bVblkvK?w=640&h=360); 12月15日,即便天气寒冷,飘着雨。跨星空间座无虚席由袋鼠云、阿里云、elast...

    tomato 评论0 收藏0

发表评论

0条评论

不知名网友

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<