国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

ES Hang的應急處理過程

IT那活兒 / 3684人閱讀
ES Hang的應急處理過程

點擊上方“IT那活兒”公眾號,關注后了解更多內容,不管IT什么活兒,干就完了?。。?/strong>


  
某月某日06:00分:收到應用電話反饋ES出現故障只能查詢不能寫入,我側第一時間登錄環境,經過核查發現存在節點連接超時和節點丟失現象,集群無法正常訪問。


故障緊急處理方案

07:45分:因影響到割接進度,決定先恢復業務,后續再分析故障原因,暫定兩個方案:

  • 方案一:重啟ES,重啟需要重新分配分片,數據量太大,ES恢復時間會比較長。
  • 方案二:將應用暫時遷到新搭的ES集群,只需要應用修改url就可使用。

08:58分:因需要緊急恢復業務采用方案二,在新集群創建相關的用戶并賦予權限,應用創建索引并修改url將數據寫入到新集群,數據寫入速率在老集群的兩倍左右,業務恢復正常。

原集群恢復處理過程

1. 故障原因分析
經過數小時的分析,找到故障原因,系統守護進程異常導致主機hang死,進而導致es節點丟失影響集群正常使用。
2. 關閉分片移動(none為關閉,all為開啟)
curl -u admin:admin-XPUT 
http://xxxxxxxxxx:9200/_cluster/settings -H Content-Type: application/json -d
{"transient":{"cluster.routing.allocation.enable":"none"}}
3. 將內存中的數據寫入磁盤,避免數據丟失
curl -u admin: admin -XPOST http://xxxxxxxx:9200/_flush/synced
4. 重啟各節點ES服務
ps -ef |grep elasticsearch
Kill -9 pid
./bin/elasticsearch -d
5. 開啟分片移動

curl -u admin:admin-XPUT
http://xxxxxxxxxx:9200/_cluster/settings -H Content-Type: application/json -d
{"transient":{"cluster.routing.allocation.enable":"all"}}

數據遷回

因故障緊急恢復才用的是方案二,應用在新集群上產生的部分數據,應用遷回后需要將這部分數據遷移導老集群,本次數據遷移使用的工具為elastic-dump。

1. 安裝elastic-dump工具

1.1 elastic-dump使用前置條件,需要安裝node.js
1)下載node.js 安裝包
官方下載地址:https://nodejs.org/dist/
2)解壓node.js 安裝包
tar -zxvf node-v10.16.3-linux-x64.tar.gz
3)配置環境變量
sudo vi /etc/profile
添加以下參數:
NODE_HOME=/app/node-v10.16.3-linux-x64
export PATH=$PATH:$NODE_HOME/bin
export NODE_HOME=$NODE_HOME/lib/node_modules
使環境變量生效:
source /etc/profile
4)查看版本號
node -v
npm -v
如能正常顯示版本,npm至此就安裝完成。
1.2 下載elastic-dump

1)官方下載地址

https://github.com/elasticsearch-dump/elasticsearch-dump?utm_source=dbweekly&utm_medium=email

2)解壓elastic-dump安裝包
unzip elasticdump.zip
3)安裝elastic-dump工具
npm install elasticdump
2. elastic-dump工具部分參數介紹
OPTIONS常用選項參數有:
  • --output

    目的地位置。

  • --input

    源位置。

  • --limit

    用于限定每一批量操作時進行遷移的文檔對象數目,默認值是100,也就是每一次從SOURCE到DESTINATION文檔對象數量。

  • --quiet

    只輸出錯誤信息,該參數的默認值是false,如果該參數設置為true??刂婆_中關于數據遷移的進度信息不可見。

  • --type

    數據遷移類型,可選值有analyzer, data, mapping三種。在ITOA由于統一版本的軟件平臺analyzer是相同的,所以進行索引遷移時,只需要遷移data, mapping兩種類型的數據。該參數的默認選項是data。

  • --ignore-errors

    該參數用于控制數據遷移過程遇到錯誤數據的處理策略。默認情況下為false,表示遇到錯誤數據時,停止數據遷移。

  • --fileSize
    單個導出文件大小設置,支持文件拆分。此值必須是**字節**模塊支持的字符串。
    以下縮寫必須用于表示單位大?。?/span>
    b代表字節;
    kb代表千字節;
    mb代表兆字節;
    gb代表千兆字節.
  • --help
    陳列該工具使用時的幫助信息。
3. 使用elastic-dump工具導出數據(設置每個json文件為50g,一次導出10000行數據,只輸出錯誤日志.)
nohup elastic-dump/node_modules/elasticdump/bin/elasticdump 
--input=http://user:password@IP:port/index_name --
output=/app/xxxxxx.json --fileSize=50gb --limit=10000 --quiet=true&
4. 導入數據(一次導入5000行數據,只輸出錯誤日志.)
nohup elastic-dump/node_modules/elasticdump/bin/elasticdump 
--input=/app/xxxxxxxx.json.split-0 --
output=http://user:password@IP:port/index_name --limit=5000 --quiet=true&
5. 數據遷移總結
本次遷移的索引在ES中查詢該索引大小共計2T,除去副本為1T,耗時64小時左右,實際導出文件44個共計2296G,ES默認是LZ4壓縮算法,壓縮比在2左右。

本文作者:劉 能(上海新炬王翦團隊)

本文來源:“IT那活兒”公眾號

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/129231.html

相關文章

  • ES6-Promise

    摘要:方法沒有設置返回值。解決思路是,當遇到任務的返回值是一個或者,并且有自己的方法的時候,就將它當做是一個對象處理,等這個對象中的方法處理到的時候,把作為參數輸出傳遞給后續的任務。 前段時間看到關于microTask的文章,《Tasks, microTasks, queues and schedules》,感覺有必要澄清一下。本篇里用setTimeout來實現的Promise,和瀏覽器原生...

    dackel 評論0 收藏0
  • 重新鞏固JS(三)——JavaScript語句

    摘要:重新鞏固系列,都是比較基礎的東西,可以進行查漏補缺,很快看完,這是第三篇。其中,部分可以省略條件語句語句例子為,小于但大于,故輸出語句當表達式的值等于值時,執行語句,遇到語句則跳出語句,若都沒匹配到值,則執行中的語句。重新鞏固JS系列,都是比較基礎的東西,可以進行查漏補缺,很快看完,這是第三篇。 其他JS重新鞏固系列: 重新鞏固JS(一)——JavaScript基本類型 重新鞏固JS(二)...

    tunny 評論0 收藏0

發表評論

0條評論

IT那活兒

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<