大数据最新ElasticSearch数据迁移方法介绍_elasticsearch 数据迁移(2),2024年最新2024程序员进阶宝典


网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
POST _flush/synced
*暂停要升级节点与集群间其他节点进行数据通讯*,避免有新的数据产生(可选的)
POST _ml/set_upgrade_mode?enabled=true
关闭当前节点,在当前服务器中升级该节点ElasticSearch版本,其中ElasticSeaarch参考原节点进行配置。
*升级ElasticSearch使用插件*
使用elasticsearch-plugin脚本安装每个已安装的 Elasticsearch 插件的升级版本。升级节点时必须升级所有插件。
语法:$ES_HOME bin/elasticsearch-plugin install XXXX
*启动升级的节点*
语法:$ES_HOME bin/nohup ./elasticsearch &
*重新启用分片分配*(若为禁用自动分片功能,无需执行此步骤)
PUT _cluster/settings{ “persistent”: { “cluster.routing.allocation.enable”: null }}
*等待节点恢复*
GET _cat/health?v=true
注意:
在滚动升级期间,分配给运行新版本的节点的主分片不能将其副本分配给使用旧版本的节点。新版本可能具有旧版本无法理解的不同数据格式。
如果无法将副本分片分配给另一个节点(集群中只有一个升级节点),则副本分片保持未分配状态,状态保持不变yellow。
在这种情况下,一旦没有初始化或重新定位分片,您就可以继续(检查init和relo列)。一但另一个节点升级,就可以分配副本并且状态将更改为green。
*重复任务*
当节点恢复并且集群稳定后,对每个需要更新的节点重复这些步骤。
*重新启动**节点与集群间其他节点进行数据通讯*(若已经暂停该功能,若未暂停,忽略此操作)
POST _ml/set_upgrade_mode?enabled=false
*注意*
在滚动升级期间,集群继续正常运行。但是,在升级集群中的所有节点之前,任何新功能都会被禁用或以向后兼容的模式运行。一旦升级完成并且所有节点都在运行新版本,新功能就会开始运行。一但发生这种情况,就无法返回以向后兼容模式运行。运行先前版本的节点将不允许加入完全更新的集群。
如果升级过程中出现网络故障,将所有剩余的旧节点与集群隔离开来,您必须使旧节点脱机并升级它们以使其能够加入集群。
如果您在升级过程中同时停止一半或更多符合主节点条件的节点,则集群将不可用,这意味着升级不再是滚动升级。如果发生这种情况,您应该升级并重新启动所有已停止的符合主节点资格的节点,以允许集群再次形成,就像执行全集群重启升级一样。可能还需要升级所有剩余的旧节点,然后它们才能在重新形成后加入集群。
1.2.2 snapshot快照
首先创建快照仓库
注意:对于快照仓库需要每个节点都对其有访问权限,所以在实际使用中需要使用nfs挂载。
a)使用Psotman方式创建仓库
Postman:PUT http://192.168.115.130:9200/_snapshot/my_repository{ “type”: “fs”, “settings”: { “location”: “/home/elastic/my_repo_floder”, “compress”: *true*, “max_restore_bytes_per_sec”: “50mb”, “max_snapshot_bytes_per_sec”: “50mb” }}
说明:my_repository为镜像仓库名称
Location 为镜像路径

b)使用Curl方式创建仓库
| curl -XPUT ‘http://192.168.115.130:9200/_snapshot/my_repository’ -H ‘content-Type:application/json’ -d ‘{ “type”: “fs”, “settings”: { “location”: “/home/elastic/my_repo_floder”, “compress”: *true*, “max_restore_bytes_per_sec”: “50mb”, “max_snapshot_bytes_per_sec”: “50mb” }}’ |
|---|
| wps20.jpg |
备份索引(全量)
a)使用Psotman方式备份
| Postman:PUT http://192.168.115.130:9200/_snapshot/my_repository/snapshot_1?wait_for_completion=true |
|---|
| wps21.jpg |
b)使用Curl方式备份
| curl -XPUT ‘http://192.168.115.130:9200/_snapshot/my_repository/snapshot_1?wait_for_completion=true’ |
|---|
| wps22.jpg |
日志显示 completed with state [SUCCESS]

c)查看备份对应索引信息
| Postman:GET http://192.168.115.130:9200/_snapshot/my_hdfs_repository/snapshot_1#snapshot_1是备份文件名称 |
|---|
| wps24.jpg |
1.2.3 .elasticdump方式
Elasticdump工具是依赖于npm进行安装的,可以参考如下地址进行安装:
https://www.cnblogs.com/itniwota/p/16011503.html
导出分词器
[root@localhost ~]# elasticdump --input=http://ip:9200/my_index --output=http://127.0.0.1:9200/my_index --type=analyzer
导出映射mapping
[root@localhost ~]# elasticdump --input=http://ip:9200/ --output=http://127.0.0.1:9200/ --all=true --type=mapping
导出全部数据
[root@localhost ~]# elasticdump --input=http://ip:9200/ --output=http://127.0.0.1:9200/ --all=true --type=data
如果集群配置了x-pack认证
[root@localhost ~]# elasticdump --input=http://user:password@ip:9200/ --output=http://user:password@127.0.0.1:9200/ --all=true --type=data
1 .3**.迁移注意事项**
ES数据迁移有两种情况:
一、ES版本不做变更,只是数据进行迁移;
二、ES版本升级,同时数据迁移至新版本ES中
上述三种方法均能完成ES的数据迁移,在实际操作时,请根据实际生产环境进行选择,优先选择Rolling upgrades滚动升级,同时需要注意一下几点:
1、ES版本发生变化,需要关注JAVA版本是否要随之变化,ES7版本时开始内嵌JAVA版本为17版本,由原1.8版本升级到17版本,jdk跨度较大,对API的调用挑战性较强。需要经过大量测试,必要时需要对代码进行重构。


网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
更多推荐
所有评论(0)