中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

MongoDB trouble shoot sharded clusters

發布時間:2020-08-03 10:11:06 來源:網絡 閱讀:5022 作者:dbapower 欄目:建站服務器



MongoDB trouble shoot sharded clusters

MongoDB trouble shoot sharded clusters

前言

Part1:寫在最前

    在MongoDB sharding環境中,我們會遇到一些常見的錯誤,本文就MongoDB官網列出的錯誤進行翻譯。



Part2:整體環境

    MongoDB 3.4.4



實戰

Part1:某個應用或者Mongos宕機

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



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

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

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



Part3:sharding中的所有成員都unavailable

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



Part4:configserver副本集成員不可用

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

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

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



Part5:configserver數據過舊導致游標失敗

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

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

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



Part6:分片鍵和集群可用性

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

1.確保MongoDB能夠在分片間均勻分配數據

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

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

更多:

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

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

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

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




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數據庫才能更新群集元數據中的塊的記錄。 如果分片無法連接到configserver數據庫,MongoDB會報告以下錯誤:

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

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


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

高碑店市| 双辽市| 绍兴市| 承德市| 榆树市| 凤阳县| 城口县| 丹江口市| 靖西县| 玛沁县| 博罗县| 扬州市| 江达县| 乌海市| 邻水| 抚宁县| 镇平县| 张掖市| 阿鲁科尔沁旗| 忻州市| 平江县| 德格县| 凉山| 古交市| 如东县| 沂源县| 中宁县| 泰宁县| 方正县| 土默特左旗| 山东省| 江阴市| 漠河县| 屏东县| 梓潼县| 栖霞市| 黑龙江省| 手游| 汝南县| 鄂托克前旗| 永善县|