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

記一次中台數據傳輸同步Elasticsearch失敗車禍現場

目錄

  • 一、背景
  • 二、題外話
  • 三、開始排查
  • 四、為什么索引處於只讀狀態呢?
  • 五、如何解決

一、背景

前幾天小哈在釘釘群里收到重慶業務線反饋,說是中台數據傳輸中間件在同步 Mysql 增量數據到 Elasticsearch 總是失敗。

什么

二、題外話

你說的這個數據傳輸和阿里雲提供的數據傳輸DTS是一個東西嗎?

阿里數據傳輸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
}

對商品索引執行如上命令后。讓業務組再次同步數據,一切正常了。

六、參考

免費分享 | 面試&學習福利資源

最近在網上發現一個不錯的 PDF 資源《Java 核心知識&面試.pdf》分享給大家,不光是面試,學習,你都值得擁有!!!

獲取方式: 關注公眾號: 小哈學Java, 后台回復資源,既可免費無套路獲取資源鏈接,下面是目錄以及部分截圖:

關注微信公眾號【小哈學Java】,回復【資源】,即可免費無套路領取資源鏈接哦

關注微信公眾號【小哈學Java】,回復【資源】,即可免費無套路領取資源鏈接哦

關注微信公眾號【小哈學Java】,回復【資源】,即可免費無套路領取資源鏈接哦

關注微信公眾號【小哈學Java】,回復【資源】,即可免費無套路領取資源鏈接哦

關注微信公眾號【小哈學Java】,回復【資源】,即可免費無套路領取資源鏈接哦

關注微信公眾號【小哈學Java】,回復【資源】,即可免費無套路領取資源鏈接哦

重要的事情說兩遍,關注公眾號: 小哈學Java, 后台回復資源,既可免費無套路獲取資源鏈接 !!!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM