(四)elasticsearch 5x 索引管理

来源:互联网 发布:剔除异常数据的方法 编辑:程序博客网 时间:2024/05/21 11:03

首先是索引运行中的常用命令:

1.cluster-allocation-explain API

这个API主要是为了方便解决下面两个问题:

  • 对于不能指派(unassigned)的分片: 解释这些分片不能被指派(到某个节点)的原因.

  • 对于已指派的分片: 解决这些分片指派到特定节点的理由.

遇见问题一定要诊断信息,选择正确的处理方式极为重要.

curl -XPOST ip:9200/_cluster/allocation/explain?prettycurl -XGET ip:9200/_cluster/allocation/explain?pretty -d '{"index":"my_index","shard":0,"primary":true}'//查看指定的node

参考文档:https://www.elastic.co/guide/en/elasticsearch/reference/current/cluster-allocation-explain.html


2.delayed_timeout

默认情况,集群会等待一分钟来查看节点是否会重新加入,如果这个节点在此期间重新加入,重新加入的节点会保持其现有的分片数据,不会触发新的分片分配。

通过修改参数 delayed_timeout ,默认等待时间可以全局设置也可以在索引级别进行修改

PUT /_all/_settings {  "settings": {    "index.unassigned.node_left.delayed_timeout": "5m"   }}

参考文档:https://www.elastic.co/guide/cn/elasticsearch/guide/current/_delaying_shard_allocation.html


3.cluster.routing.allocation.enable

正常情况下,Elasticsearch 希望你的数据被完全的复制和均衡的分布。如果你手动关闭了一个节点,集群会立刻发现节点的丢失并开始再平衡。如果节点的维护是短期工作的话,这一点就很烦人了,因为大型分片的再平衡需要花费相当的时间(想想尝试复制 1TB 的数据——即便在高速网络上也是不一般的事情了)。

此命令可以停止分片的自动分配

PUT /_cluster/settings{    "transient" : {        "cluster.routing.allocation.enable" : "none"    }}
此命令可以开启分片的自动分配

PUT /_cluster/settings{    "transient" : {        "cluster.routing.allocation.enable" : "all"    }}

参考文档:https://www.elastic.co/guide/cn/elasticsearch/guide/current/_rolling_restarts.html


索引运行过程中有时出一些问题,以下是遇到过的问题及解决办法.

问题1:索引red,有主节点未分配

allocation_status : no_valid_shard_copy

原因是直接在服务器上删除了某个节点的数据及备份,导致该节点为空,且没有任何备份.此时只需要强制将空的主分片分配给某个节点就可以了,命令:

POST /_cluster/reroute?pretty -d '{ "commands":[{     "allocate_empty_primary":{"index":"my_index","shard":0,"node":"node_name","accept_data_loss":true} }]}'

相似命令,用于分配给拥有旧数据的节点,有丢失数据的风险:

POST /_cluster/reroute?pretty -d '{ "commands":[{     "allocate_stale_primary":{"index":"my_index","shard":0,"node":"node_name","accept_data_loss":true} }]}'

使用前请参考官网文档:https://www.elastic.co/guide/en/elasticsearch/reference/5.6/cluster-reroute.html


问题2:索引red,有主节点未分配

failed to obtain in-memory shard lock,ShardLockObtainFailedException,obtaining shard lock timed out after 5000ms

原因是碎片分配器在5次尝试失败后不再尝试,只需要调整最大重试次数,或者使用重试命令即可.

//重试curl -XPOST ip:9200/_cluster/reroute?retry_failed//设置最大重试次数curl -XPUT ip:9200/my_index/_settings?pretty -d '{  "index.allocation.max_retries" : 10}'
问题参考:https://github.com/elastic/elasticsearch/issues/23199






原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 微信录音声音小怎么办 word文档已停止工作怎么办 怀孕30天不想要怎么办 一楼墙体起碱怎么办 农村平房顶四墙面渗水怎么办 被蝎子精蛰了怎么办 小娃头摔包要怎么办抹个什么 老人死了银行钱存死期怎么办 飙酷车神2一进画面就闪退怎么办 电脑开机键盘鼠标没反应怎么办 玩gta4自由城卡怎么办 gta5游戏服务当前不可用怎么办 健身后胳膊变粗怎么办 健身后手臂变粗怎么办 家猫见到我就跑怎么办 走路多了小腿酸痛怎么办 脚有脚气很痒怎么办 地板精油喷多了怎么办 史莱姆泥变硬了怎么办 dnf剑帝命中率低怎么办 无意中讲话伤害了人怎么办 高中上不下去了怎么办 高三坚持不下去怎么办 word点了不保存怎么办 做了ppt没保存怎么办 中班安全教案迷眼了怎么办 美的空调尘满怎么办 高考报名系统密码忘记怎么办 高考理综8题怎么办 高三了语文很差怎么办 高三了语文成绩差怎么办 供太岁初一忘了怎么办 高一英语100多分怎么办 高一孩子英语差怎么办 高考中题目有错别字怎么办 相亲简单自我介绍后不回我怎么办 初中毕业没考上高中怎么办 幼儿园小朋友经常说脏话幼师怎么办 我不想当组长了怎么办 领导让我做组长怎么办 情人抓住把柄敲诈自己老公怎么办