Elastic_Search-通过reindex实现集群数据迁移
# 以下方案仅适用于不同环境的集群数据迁移,如果是同一个集群内直接使用第三步“拉取数据”即可,不需要账号密码等参数
# 版本
老集群ES 5.4 新集群ES 7.9
# 背景
客户的ES集群做了升级,公司服务器上搭建的ES集群也做了相应升级。现在要把ES5的数据迁移到7.9上。
# 说明
本文使用的reindex做迁移功能。如果数据量巨大的情况下可以考虑使用dump。reindex适合单索引几万十几万的情况下使用。
# 步骤
添加白名单
在新集群的 elasticsearch.yml 中添加
reindex.remote.whitelist: 旧集群ip:端口
1重启新集群
更改参数
PUT _settings?pretty { "index.refresh_interval": -1, "index.number_of_replicas": 0 }
1
2
3
4
5拉取数据
POST _reindex { "source": { "remote": { "host": "旧集群ip:端口", "username": "用户名", "password": "密码" }, "index": "索引名" }, "dest": { "index": "新的索引名,注意不要重复" } }
1
2
3
4
5
6
7
8
9
10
11
12
13
14如果数据量比较大 也可以设置后台运行
POST _reindex?wait_for_completion=false
1这时候会返回task_id 我们可以使用这个id查看状态
GET _tasks/task_id
1恢复设置
PUT _settings?pretty { "index.refresh_interval": "30s", "index.number_of_replicas": 1 }
1
2
3
4
5删掉elasticsearch.yml中的 reindex.remote.whitelist并重启服务
编辑 (opens new window)
上次更新: 2024-11-06, 19:27:10