.suofang img { max-width: 100% !important; height: auto !important }
一、问题描述
这次遇到的问题比较特殊,尝试过以下几种手段都没有恢复:
-
_cluster/reroute手动分片shard
- 由于是从shard无法分片,所以当时试过将所以的副本改成0,然后再设置成1,想通过重新生成副本来解决,结果也失败
接下来是排查问题的过程:
indexname 3 r UNASSIGNED indexname 4 r UNASSIGNED indexname 1 r UNASSIGNED 服务器托管网
之前在运维过程中也遇到过UNASSIGNED这种从shard无法分配的问题,通过”allocate_replica”命令手动分配可以解决,这类问题一般都是因为node节点重启或者失联导致的shard分片异常
2、通过“GET _cluster/allocation/explain”错误信息如下:
"index": "indexname", "shard": 3, "primary": false, "current_state": "unassigned", "unassigned_info": { "reason": "ALLOCATION_FAILED", "at": "2023-11-02T18:43:14.758Z", "failed_allocation_attempts": 300, "details": "failed shard on node [4MMOUt8-SMatWGCzX1asAQ]: failed to create shard, failure IOException[failed to obtain in-memory shard lock]; nested: ShardLockObtainFailedException[[indexname][3]: obtaining shard lock timed out after 5000ms]; ", "last_allocation_status": "no_attempt" }, "can_allocate": "no", "allocate_explanation": "cannot allocate because allocation is not permitted to any of the nodes",
大多数情况下shard的allocate相关的问题都可以通过“GET _cluster/allocation/explain”命令获取到有用的关键信息,从返回的内容来分析是索引的第3个shard导致的,在node节点[4MMOUt8-SMatWGCzX1asAQ]被锁定。
二、处理过程
前置工作
- 业务将索引的读写请求切走
- 创建一个测试索引验证shard是否都正常
- 备份索引数据
方案1:重启索引
--刷新索引 POST indexname/_flush --关闭索引 POST indexname/_close ---打开索引 POST indexname/_open
在本次处理过程中,使用了方案1重启索引就已经把问题解决了,但是方案一还是的业务配合将读写请求切走,否则索引close会导致应用的请求报错
方案2:重启节点node节点
[4MMOUt8-SMatWGCzX1asAQ]
PUT _cluster/settings { "persistent": { "cluster.routing.allocation.enable": "none" } } PUT _cluster/settings { "persistent": { "cluster.routing.allocation.enable": "all" } }
方案2重启锁定shard的节点理论上来说也是可以解决这个问题,但是因为方案一已经解决了问题就没机会做测试
方案3.重建索引
- 先还原备份到一个临时索引,验证数据没问题
- 删除当前索引,还原创建新索引
三、思考总结
其实整个问题处理过程中还有一些其它的细节在文中没有提到,就是集群在默认开启自动shard均衡过程中由于shard多长尝试分片无法成功,达到默认的5次重试之后就会报错,这个时候其实可以尝试将集群的自动分片关闭”cluster.routing.allocation.enable”: “none”,然后执行”POST /_cluster/reroute?retry_failed=true”来重置计数,最后通过手动分片sh服务器托管网ard的方式来做迁移也有可能能解决问题。只不过在每次遇到问题的时候需要结合当时的最佳场景去做判断,寻找影响范围最小的方案;
备注: 作者:pursuer.chen 博客:http://www.cnblogs.com/chenmh 本站点所有随笔都是原创,欢迎大家转载;但转载时必须注明文章来源,且在文章开头明显处给明链接。 《欢迎交流讨论》 |
.feedbackCon a { border-bottom: 1px dotted rgba(51, 51, 51, 1) }服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
机房租用,北京机房租用,IDC机房托管, http://www.fwqtg.net
相关推荐: C语言天花板——指针(初阶)一、什么是指针🤔二、指针类型 🤔三、野指针🤔四、指针运算🤔五、二级指针🤔六、指针数组🤔
大家在刚刚接触C语言的时候就肯定听说过,指针的重要性以及难度等级,以至于经常“谈虎色变”,但是今天我来带大家走进指针的奇妙世界。 一、什么是指针 指针理解的两个要点: 1️⃣指针是内存中一个最小单元的编号,也就是地址 2️⃣平常口语中说的指针,通常指的是指针变…