栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

ElasticSearch-解决unassigned shareds问题

ElasticSearch-解决unassigned shareds问题

背景

es版本:6.4

因为一次集群异常,重启es集群后显示unassigned shareds。以下是解决办法

注意:如果网上其他博客的方法执行curl命令总报错的时候,一定要去官网,选择自己的版本,查看cluster reroute的文档。很可能是字段错了!!!

文档链接给大家留在最后的参考文档了,可点进去自行选择版本。

1.获取unassigned shareds信息
curl elasticsearch_ip:9400/_cat/shards > UNASSIGNED.txt

进行筛选用于脚本处理(此命令主要筛选出unassigned状态的分片的index和shard两列)

cat UNASSIGNED.txt | grep UNASSIGNED | awk '{print $1,$2}' | uniq > UNASSIGNED-2.txt

2.使用脚本重新分配主分片路由

由于是6.4版本使用其他博客中的"allocate"都无效。

查阅官网,此版本要使用"allocate_replica"。

但是由于主分片也有问题,所以要使用这个"allocate_stale_primary",将主分片分配给保存过时副本的节点。关访文档说明了,这个要慎用,可能造成数据丢失。还是先尝试"allocate_replica"。

cat /root/UNASSIGNED-2.txt | while read line;do
index_name=`echo $line | awk '{print $1}'`
shard_name=`echo $line | awk '{print $2}'`
curl -H 'Content-type: application/json' -XPOST 'http://172.24.27.124:9400/_cluster/reroute' -d '{
 "commands": [
  {
   "allocate_stale_primary": {
    "index": "'$index_name'",
    "shard": '$shard_name',
    "node": "g83t-f8sRHS88r_mwVn76Q",
    "accept_data_loss": true
   }
  }
 ]
}'
done

index:填写索引名称

shard:填写分片id

node:观察UNASSIGNED.txt文件,看分片不在哪个节点上,就填写哪个节点。

node值查看方式

curl elasticsearch:9400/_nodes/process?pretty

参考文档

Cluster Reroute | Elasticsearch Guide [6.4] | Elastichttps://www.elastic.co/guide/en/elasticsearch/reference/6.4/cluster-reroute.html

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/604675.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号