ElasticSearch系列---【使用reindex做跨集群数据迁移】
1.前提条件
要保证网络策略通。
2.在新集群的每一台elasticsearch.yml中加入白名单
#带上引号,192.168.1.10:9200为旧集群ip
reindex.remote.whitelist: "192.168.1.10:9200"
3.重启新集群
4.在kibana中执行dsl执行reindex
#wait_for_completion=false参数决定是否异步,false为异步
POST _reindex?wait_for_completion=false
{
"source": {
"remote": {
"host": "http://旧的ES的host:9200"
},
"index": "旧的ES的index"
},
"dest": {
"index": "新的ES的index"
}
}
#如果上面wait_for_completion=false,执行完会生成一个任务号,可以使用下面的命令查看执行结果,可以观察同步进度和一次同步多少
GET _tasks/任务号
#如果忘了任务号,不要慌,只要任务没结束,还在执行中,可以用下面命令查看是否有正在迁移的任务
GET _tasks?detailed=true&actions=*reindex
5.遇到的问题
由于我新集群JVM设置了只有8G,我同时同步了两个索引,报了下面的错误:
circuit_breaking_exception[[parent] Data too large, data for [<transport_request>] would be [12318476937/11.2gb], which is larger than the limit of [5537372108/5.5gb], real usage: [5818456248/5.8gb]
此时使用kibana执行任何命令,都会报上面的错,或者其他错,这里我想表达的是,会导致集群不可用。我执行了新建索引的dsl,也无法执行。
解决方案:
参考链接:https://blog.csdn.net/weixin_45112997/article/details/130948277
#本人使用的服务器内存配置为64G,所以这里这只jvm参数为31g,es集群jvm参数配置最高不要超过32g,即使服务器配置再高
-Xms31g 表示JVM Heap(堆内存)最小为10g,初始化内存大小
-Xmx31g表示应用JVM最大允许分配的堆内存,程序能够使用的最大内存数
这两个参数最好设置一样,可以避免每次GC后调整堆大小。
愿你走出半生,归来仍是少年!
浙公网安备 33010602011771号