日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ElasticSearch重启策略

發(fā)布時間:2024/9/16 编程问答 60 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ElasticSearch重启策略 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

關(guān)閉數(shù)據(jù)平衡

當(dāng)我們試圖關(guān)閉一個節(jié)點時,ES會立即試圖復(fù)制這個節(jié)點中的數(shù)據(jù)到集群中其他節(jié)點上,這個過程會造成大量的IO請求,在關(guān)閉該節(jié)點的時候可以通過設(shè)置一下參數(shù)來避免此問題的發(fā)生:

curl -X PUT "localhost:9200/_cluster/settings" -H 'Content-Type: application/json' -d' {"persistent": {"cluster.routing.allocation.enable": "none"} }

transient與persistent的區(qū)別見:這里
僅僅做這一步還是不夠的,即使數(shù)據(jù)沒有發(fā)生變化,仍然會出現(xiàn)大量主副分片之間的數(shù)據(jù)拷貝。原因是在于recovery是簡單的對比主副分片的segment file(分段文件)來判斷哪些數(shù)據(jù)一致是可以本地恢復(fù),哪些不一致的需要重新拷貝的。而不同節(jié)點的segment file是完全獨立運行的,這可能導(dǎo)致主副本merge的深度不完全一致,從而造成及時文檔集完全一樣,而產(chǎn)生的segment file卻不完全一樣。
因此通過synced flush(同步刷新)為對應(yīng)的shard加入一個synced flush id,這樣在節(jié)點重啟后,先對比主副shard的synced flush id,就可以知道兩個shard是否完全相同,避免了不必要的segment file拷貝。

同步刷新

執(zhí)行同步刷新,當(dāng)停止一個索引時,分片的恢復(fù)會很快,所以要進(jìn)行同步刷新請求:

POST _flush/synced

當(dāng)有分片在集群重啟過程中并沒有發(fā)生更新,則跳過對這些分片的同步校驗,提高分片恢復(fù)的速度。
原理是當(dāng)沒有索引操作時,id 標(biāo)記會添加到分片上。標(biāo)記可以作為一個快速的方式來檢查兩個分片的lucene索引一致是否一致;這種快速的id 比較主要用于 數(shù)據(jù)恢復(fù)或者重啟后跳過第一個也是成本最高的階段;這種情況下,segment 不需要copy,事務(wù)日志的重演會立即執(zhí)行;當(dāng)id 標(biāo)記和flush 一起用的時候,事物日志很可能為空,更加加速了數(shù)據(jù)的恢復(fù);
盡管很方便,但是有一些警告:

  • 同步刷新是個盡最大努力的操作:任何正在執(zhí)行索引的操作都會造成同步刷新失敗;這就一位置有些分片可能刷新成功,而有些分片則刷新失敗;
  • 同步id 的標(biāo)記在再次刷新是會移除掉;
  • 這是因為刷新會替換低級別的儲存標(biāo)記的lucene 提交點;事物日志中未提交的操作不會移除id 標(biāo)記;現(xiàn)實中,在任何時間,應(yīng)該把索引操作視觸發(fā)的移除標(biāo)記為刷新一樣;
    note:有索引操作時,請求同步刷新是無害的;當(dāng)索引空閑時同步刷新成功,否則失敗;任何請求成功的同步刷新在數(shù)據(jù)恢復(fù)時更加迅速;

    synced flush只對冷索引有效,對于熱索引(5分鐘內(nèi)有更新的索引)無效,如果重啟的節(jié)點包含有熱索引,那還是免不了大量的拷貝。

    關(guān)閉和升級所有節(jié)點

    停止在集群中的所有節(jié)點上的服務(wù)。每一個節(jié)點都要進(jìn)行單獨升級。這個主要就是文件替換操作,注意保留日志記錄。

    啟動集群

    先啟動master節(jié)點,然后在啟動data節(jié)點。

    等待集群變?yōu)閥ellow

    當(dāng)節(jié)點加入集群中后,它首先恢復(fù)存儲在本地的主分片數(shù)據(jù)。最初的時候,通過_cat/health請求發(fā)現(xiàn)集群的狀態(tài)是紅色,意味著不是所有的主分片都已分配。當(dāng)每個節(jié)點主分片恢復(fù)完后,集群的狀態(tài)將會變成yellow,這意味著所有主分片已經(jīng)分配,而副本分片沒有被分配。

    分配副本分片

    延遲副本的分配直到所有節(jié)點都加入集群,在集群的所有節(jié)點,可以重新啟用副本分配:

    curl -X PUT "localhost:9200/_cluster/settings" -H 'Content-Type: application/json' -d' {"persistent": {"cluster.routing.allocation.enable": "all"} }

    這個時候集群將開始復(fù)制所有副本到數(shù)據(jù)節(jié)點上,這樣可以安全恢復(fù)索引和搜索,如果能延遲索引和搜索直到所有的分片已經(jīng)恢復(fù),這樣可以加快集群的恢復(fù)。

    總結(jié)

    以上是生活随笔為你收集整理的ElasticSearch重启策略的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。