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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

MongoDB trouble shoot sharded clusters

發(fā)布時間:2025/6/15 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MongoDB trouble shoot sharded clusters 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.



MongoDB trouble shoot sharded clusters

前言

Part1:寫在最前

????在MongoDB sharding環(huán)境中,我們會遇到一些常見的錯誤,本文就MongoDB官網(wǎng)列出的錯誤進行翻譯。



Part2:整體環(huán)境

????MongoDB?3.4.4



實戰(zhàn)

Part1:某個應用或者Mongos宕機

????如果每個應用程序服務器都有自己的mongos實例,其他應用程序服務器可以繼續(xù)訪問數(shù)據(jù)庫。 此外,mongos實例不保持持久狀態(tài),并且可以重新啟動(啟動過程中為unavailable),而不會丟失任何狀態(tài)或數(shù)據(jù)。 當一個mongos實例啟動時,它會從configserver取回數(shù)據(jù),并可以開始路由查詢。



Part2:在sharding集群中,其中一個mongod進程宕機

????對于sharding環(huán)境,副本集提供了非常好的高可用能力。如果宕機的是主庫,則副本集會選出一個新的主庫。如果宕機的是從庫,則副本集會讓這臺從庫與主庫斷開連接,并且這臺從庫的數(shù)據(jù)不會被清空。在三個成員副本集中,即使該組的單個成員遇到災難性故障,另外兩個成員也有完整的數(shù)據(jù)副本。

????經(jīng)常去檢查可用性是否中斷以及是否有故障,如果系統(tǒng)出現(xiàn)不可恢復的故障,盡快替換掉出問題的服務器,并將一臺新的成員加入到副本集中,以保證整個副本集集群的高可用性。



Part3:sharding中的所有成員都unavailable

????如果副本集分片的所有成員都不可用,則該分片中保留的所有數(shù)據(jù)都不可用。但是,所有其他分片上的數(shù)據(jù)將保持可用,并且可以將數(shù)據(jù)讀取和寫入其他分片。?但是,應用程序必須能夠處理部分結果,此時DBA該調查中斷的原因,并嘗試盡快恢復分片。



Part4:configserver副本集成員不可用

????在版本3.2中更改:從MongoDB 3.2開始,分片集群的配置服務器可以部署為副本集。 副本集配置服務器必須運行WiredTiger存儲引擎。 MongoDB 3.2不推薦使用配置服務器的三個鏡像mongod實例。

????副本集為配置服務器提供高可用性。 如果不可用的配置服務器是主服務器,則副本集將選擇新的主服務器。

????如果副本集配置服務器丟失其主服務器,并且無法選擇主服務器,則集群的元數(shù)據(jù)將變?yōu)橹蛔x。 仍然可以從分片讀取和寫入數(shù)據(jù),但是在primary可用之前無法進行塊遷移或塊分割。 如果所有配置數(shù)據(jù)庫變得不可用,則集群無法使用。



Part5:configserver數(shù)據(jù)過舊導致游標失敗

????當一個或多個mongos實例尚未從配置數(shù)據(jù)庫更新其集群元數(shù)據(jù)的緩存時,查詢返回以下警告:

could?not?initialize?cursor?across?all?shards?because?:?stale?config?detected

????此警告不應傳回應用程序。警告將重復,直到所有的mongos實例刷新其緩存。要強制實例刷新其緩存,請運行flushRouterConfig命令。



Part6:分片鍵和集群可用性

選擇分片鍵時最重要的考慮因素是:

1.確保MongoDB能夠在分片間均勻分配數(shù)據(jù)

2.衡量寫操作可以遍布整個集群

3.確保mongos可以將大多數(shù)查詢隔離成特定的mongod。

更多:

1.每個分片應該是副本集,如果特定的mongod實例失敗,則副本集成員將選擇另一個作為主節(jié)點并繼續(xù)操作。?但是,如果整個分片由于某種原因無法訪問或失敗,則該數(shù)據(jù)將不可用。

2.如果分片鍵允許mongos將大多數(shù)操作分離成單個分片,則單個分片的失敗只會使一些數(shù)據(jù)不可用。

3.如果分片建分布的數(shù)據(jù)要求獲取整個集群,那么這個分片不可用將導致整個集群不可用

實質上,這也說明了選擇合適的片鍵對于單個分片隔離查詢操作的重要性




Part7:configserver串錯誤

????從MongoDB 3.2開始,configserver服務器可以部署為副本集。 分片集群的mongos實例必須指定相同的configserver服務器副本集名稱,但可以指定副本集的不同成員的主機名和端口。

????3.4開始,不再支持使用鏡像mongod實例作為配置服務器(SCCC)。 在將分片集群升級到3.4之前,必須將配置服務器從SCCC轉換為CSRS。

????對于早期版本的MongoDB分片集群,configserver服務器使用三個鏡像mongod實例的拓撲,分片集群中的mongos實例必須指定相同的configDB字符串。



Part8:移動configerserver服務器時避免停機

????使用CNAME來識別您的配置服務器到集群,以便可以重新命名和重新編號配置服務器,而不會停機。



Part9:move Chunk 報錯

????chunk migration結束時,分片必須連接到configserver數(shù)據(jù)庫才能更新群集元數(shù)據(jù)中的塊的記錄。 如果分片無法連接到configserver數(shù)據(jù)庫,MongoDB會報告以下錯誤:

ERROR:?moveChunk?commit?failed:?version?is?at?<n>|<nn>?instead?of?<N>|<NN>"?and?"ERROR:?TERMINATING"

????當發(fā)生這種情況時,shard副本集的primary 復制終止以保護數(shù)據(jù)一致性。 如果secondary成員可以訪問配置數(shù)據(jù)庫,則在選舉為新主之后,分片上的數(shù)據(jù)將再次被訪問。


總結

以上是生活随笔為你收集整理的MongoDB trouble shoot sharded clusters的全部內容,希望文章能夠幫你解決所遇到的問題。

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