集群的数据迁移 es6--->es7
#### 两套集群
[root@elk101 config]# curl 10.0.0.101:9200/_cat/nodes
10.0.0.103 61 78 0 0.06 0.07 0.06 cdfhilmrstw - elk103
10.0.0.102 61 79 0 0.08 0.10 0.08 cdfhilmrstw * elk102
10.0.0.101 54 96 0 0.05 0.14 0.12 cdfhilmrstw - elk101
[root@elk101 config]# curl 10.0.0.101:19200/_cat/nodes
10.0.0.101 59 97 4 0.04 0.14 0.12 mdi - elk101
10.0.0.102 48 79 3 0.08 0.10 0.08 mdi - elk102
10.0.0.103 46 78 3 0.05 0.07 0.06 mdi * elk103
向 es6中写入数据
10.0.0.101:19200/aaaa/_doc/1001
{
"name": "李振东",
"hobby": ["aaa","bbb","xxx"]
}
数据迁移
同集群迁移(拷贝)
(2)同集群迁移实战
POST http://10.0.0.103:19200/_reindex
{
"source": {
"index": "aaaa"
},
"dest": {
"index": "aaaa-new"
}
}
不同集群迁移
elk101修改配置文件
# 添加如下一行代码,表示添加远程主机的白名单,用于数据迁移信任的主机。
vim /app/elasticsearch-7.17.5/config/elasticsearch.yml
reindex.remote.whitelist: "10.0.0.*:19200"
# 重启ES7服务
systemctl restart es7
POST http://10.0.0.101:9200/_reindex
{
"source": {
"index": "aaaa",
"remote": {
"host": "http://10.0.0.101:19200"
}
},
"dest": {
"index": "aaaa-07new"
}
}
分片重路由
在 Elasticsearch 中,分片重路由(shard reallocation)是指 Elasticsearch 集群在某些条件下对分片的分布进行动态调整的过程。Elasticsearch 集群通过分片(shard)将数据分布到多个节点,以实现水平扩展、容错以及高性能的并发处理。
分片重路由的触发条件:
- 节点故障或移除:当集群中的某个节点故障或下线时,集群会自动将该节点上的分片重路由到其他可用节点,以确保数据的高可用性和可靠性。
- 节点新增:当向集群中添加新节点时,Elasticsearch 会通过分片重路由将数据分布到新的节点上,以均衡各个节点的负载,提升性能。
- 索引设置变化:修改索引的副本数量(replica shard),或者进行分片的重新平衡操作时,也会触发分片重路由。
- 手动触发:管理员可以通过 API 或者其他管理工具手动触发分片重路由,例如通过
POST _cluster/reroute
指令来指定特定的重路由操作。
分片重路由的作用:
- 数据的高可用性:在节点故障时,分片重路由可以确保数据重新分配到其他节点,保证数据的访问不受影响。
- 负载均衡:当集群中加入新的节点时,通过重路由,集群可以平衡每个节点上的数据量,防止某些节点负载过高而影响性能。
- 数据恢复:当节点发生故障或不可用时,集群可以自动触发分片重路由,恢复集群的健康状态。
分片重路由机制的关键点:
- 主分片与副本分片:主分片和副本分片在节点之间的重新分配需要遵循一定的规则,比如不能将主分片和副本分片同时分配到同一个节点。
- 分片分配算法:Elasticsearch 使用复杂的分片分配算法,来确保数据在节点间的合理分布,以优化性能并减少集群的资源消耗。
实战
(1)将"aaaa"索引的0号分片从elk103节点移动到elk102节点
POST 10.0.0.101:9200/_cluster/reroute
{
"commands": [
{
"move": {
"index": "aaaa",
"shard": 0,
"from_node": "elk103",
"to_node": "elk102"
}
}
]
}
## 取消副本分片的分配,其副本会重新初始化分配。
POST 10.0.0.101:9200/_cluster/reroute
{
"commands": [
{
"cancel": {
"index": "aaaa",
"shard": 0,
"node": "elk101"
}
}
]
}
副本分片的id 已经发生变化