Elasticserach 同步索引报错:ElasticSearch ClusterBlockException[blocked by: [FORBIDDEN/12/index read-only / allow delete (api)]
欢迎关注个人微信公众号: 小哈学Java, 文末分享阿里 P8 高级架构师吐血总结的 《Java 核心知识整理&面试.pdf》资源链接!!
个人网站: https://www.exception.site/essay/elasticsearch-sync-index-read-only-allow-delete
目录
- 一、背景
- 二、题外话
- 三、开始排查
- 四、为什么索引处于只读状态呢?
- 五、如何解决
一、背景
前几天小哈在钉钉群里收到重庆业务线反馈,说是中台数据传输中间件在同步 Mysql 增量数据到 Elasticsearch 总是失败。
二、题外话
你说的这个数据传输和阿里云提供的数据传输DTS是一个东西吗?
不是!上面说的数据传输是小哈所在的中台研发部自主研发的中间件,目的是为了取代各业务线对阿里DTS同步功能的依赖!
目前来说,数据传输还是要依赖于阿里开源 Canal, 或者阿里 DTS,依赖的目的是实现对 Mysql 数据库 binlog 增量订阅。
以上网络架构示例图中,中台数据传输充当一个 binlog 事件消费者的角色,通过自定义规则映射,数据加工,分发并最终同步到目标源 Elasticsearch 中。
三、开始排查
回归正题,出了问题,立马赶紧通过跳板机连上数据传输所在的服务器,开始查看日志:
看到日志中存在大量的 [FORBIDDEN/12/index read-only / allow delete (api)]
错误!!
提示错误也很明显:ES 索引处于只读状态!!在和业务组沟通以后,发现需要同步的目标索引有两个,一个商品索引(充当主表),一个商品属性索引(充当商品从表),从表同步是 ok 的,也就是说商品属性索引非只读状态,写入正常,仅仅是商品索引处于只读状态,最终未能正常同步数据。
四、为什么索引处于只读状态呢?
什么原因导致的索引只读的?小哈开始翻阅 Elasticsearch 官方文档, 原文如下:
Elasticsearch considers the available disk space on a node before deciding whether to allocate new shards to that node or to actively relocate shards away from that node.
Elasticsearch 在决定是否分配新分片给该节点,或对该节点重新定位分片之前,会先判断该节点存储空间是否足够,如果说你的使用磁盘空间已经超过 95%,ES 会自动将索引 index
置为 read-only
状态。
于是,让运维看下 ES 机器的磁盘空间是否足够,运维反馈说:前两天就是因为磁盘不足告警,刚刚扩的容,肯定是够的!
真相大白了!
前两天磁盘空间不足,那个时候,商品索引刚好有写入的操作,由于 ES 的保护机制,将该索引置为了只读状态。
五、如何解决
原因找到了!要如何解决呢?
处于只读状态的索引,只能被查询或者删除。而 ES 还不会自动将索引状态切换回来,就需要我们手动切换了:
PUT /<yourindex>/_settings
{
"index.blocks.read_only_allow_delete": null
}
对商品索引执行如上命令后。让业务组再次同步数据,一切正常了。
六、参考
- https://www.elastic.co/guide/en/elasticsearch/reference/current/disk-allocator.html
- https://stackoverflow.com/questions/48032661/transporterror403-ucluster-block-exception-ublocked-by-forbidden-12-inde
- https://blog.51cto.com/michaelkang/2164181
- https://www.aityp.com/%E8%A7%A3%E5%86%B3elasticsearch%E7%B4%A2%E5%BC%95%E5%8F%AA%E8%AF%BB/
免费分享 | 面试&学习福利资源
最近在网上发现一个不错的 PDF 资源《Java 核心知识&面试.pdf》分享给大家,不光是面试,学习,你都值得拥有!!!
获取方式: 关注公众号: 小哈学Java, 后台回复资源,既可免费无套路获取资源链接,下面是目录以及部分截图:
重要的事情说两遍,关注公众号: 小哈学Java, 后台回复资源,既可免费无套路获取资源链接 !!!
Elasticserach 同步索引报错:ElasticSearch ClusterBlockException[blocked by: [FORBIDDEN/12/index read-only / allow delete (api)]的更多相关文章
- 解决:ElasticSearch ClusterBlockException[blocked by: [FORBIDDEN/12/index read-only / allow delete (api)];
简记 使用SkyWalking用ES做存储,发现运行一段时间会提示ElasticSearch ClusterBlockException[blocked by: [FORBIDDEN/12/index ...
- ElasticSearch ClusterBlockException[blocked by: [FORBIDDEN/12/index read-only / allow delete (api)]锁定状态,无法插入数据
PUT /twitter/_settings { "index.blocks.read_only_allow_delete": null } 官网给出的解决办法
- ElasticSearch 因为磁盘空间不够引起的数据插入错误。(message [ClusterBlockException[blocked by: [FORBIDDEN/12/index read-only / allow delete (api)];]])
ES升级到624测试从Kettle插入数据的时候,经常提示如下错误 message [ClusterBlockException[blocked by: [FORBIDDEN/12/index rea ...
- es报错org.frameworkset.elasticsearch.ElasticSearchException: {"error":{"root_cause":[{"type":"cluster_block_exception","reason":"blocked by: [FORBIDDEN/12/index read-only / allow delete (api)];"}],
今天es在保存数据的时候报错 org.frameworkset.elasticsearch.ElasticSearchException: {"error":{"root ...
- ElasticSearch6 报错blocked by: [FORBIDDEN/12/index read-only / allow delete (api)];
原文连接:https://blog.csdn.net/u013042707/article/details/84110531 方案:curl -XPUT -H "Content-Type: ...
- ElasticSearch、Logstash管理和监控——blocked by: [FORBIDDEN/12/index read-only / allow delete (api)]
1.某一天出现Kafka堆积大量未消费的记录: 2.该主题是用logstash进行消费的,然后查询logstash的日志(logstash/logs/logstash-plain.log),出现以下提 ...
- elasticsearch删除索引报错【原】
如果elasticsearch删除索引报错 curl -X DELETE 'http://10.73.26.66:9200/httpd-34-2017.08.15' {"error" ...
- git同步遇到报错
git同步遇到报错 “fatal: unable to access ‘https://github.com/ruanwenwu/newp.git/‘: Peer reports incompatib ...
- phoenix连接hbase数据库,创建二级索引报错:Error: org.apache.phoenix.exception.PhoenixIOException: Failed after attempts=36, exceptions: Tue Mar 06 10:32:02 CST 2018, null, java.net.SocketTimeoutException: callTimeou
v\:* {behavior:url(#default#VML);} o\:* {behavior:url(#default#VML);} w\:* {behavior:url(#default#VM ...
随机推荐
- mysql_数据查询_嵌套查询
嵌套查询 一个SELECT-FROM-WHERE语句称为一个查询块. 嵌套查询:将一个查询块嵌套在另一个查询块的WHERE子句或者HAVING短语的条件中的查询. 注:子查询的SELECT语句中不能使 ...
- c#遍历注册表
--来自 https://blog.csdn.net/wenchangren/article/details/751863using System; using Microsoft.Win32; us ...
- Java中面向对象三大特性之——多态
多态的概述: 多态是继封装.继承之后,面向对象的第三大特性. 生活中,比如跑的动作,小猫.小狗和大象,跑起来是不一样的.再比如飞的动作,昆虫.鸟类和飞机,飞起来也是不一样的.可见,同一行为,通过不同 ...
- CAD动态绘制样条线(com接口)
主要用到函数说明: _DMxDrawX::SendStringToExecuteFun 把命令当着函数执行,可以传参数.详细说明如下: 参数 说明 IDispatch* pParam 命令参数,IMx ...
- 一个带关闭按钮的Div窗口,很漂亮
<html><head><title>JS+CSS实现带关闭按钮的DIV弹出窗口</title><script> function lock ...
- 51nod1006 -最长公共子序列Lcs【动态规划】
给出两个字符串A B,求A与B的最长公共子序列(子序列不要求是连续的). 比如两个串为: abcicba abdkscab ab是两个串的子序列,abc也是,abca也是,其中abca是这两个字符串最 ...
- vue中对象属性改变视图不更新问题
常规情况下我们在vue实例的data中设置响应数据.但当数据为对象,我们增加或删除对象属性值时,视图并不触发更新,如何解决这个问题呢? let vm = new Vue{ el: '#app', da ...
- Thawte
Thawte 公司为 VeriSign(即:现更名为Symantec) 全资子公司,是全球第三大数字证书颁发机构(CA),成立于1995年,自1996年正式提供数字证书产品到1999年占领全球市场的4 ...
- 【codeforces 801B】Valued Keys
[题目链接]:http://codeforces.com/contest/801/problem/B [题意] 定义一个对两个字符串x,y的f(x,y)函数; 返回的是一个字符串; 这个返回的字符串的 ...
- Codeforces Round #413(Div. 1 + Div. 2, combined)——ABCD
题目在这里 A.Carrot Cakes 乱七八糟算出两个时间比较一下就行了 又臭又长仅供参考 #include <bits/stdc++.h> #define rep(i, j, k) ...