mongodb集群shard狀態異常:RECOVERING

2018-11-28T06:46:55.783+0000 I REPL     [replication-0] We are too stale to use 172.19.9.12:27003 as a sync source. Blacklisting this sync source because our last fetched timestamp: Timestamp(1542344943, 1) is before their earliest timestamp: Timestamp(1543387334, 5197) for 1min until: 2018-11-28T06:47:55.783+0000
2018-11-28T06:46:55.783+0000 I REPL     [replication-0] sync source candidate: 172.19.9.11:27003
2018-11-28T06:46:55.783+0000 I REPL     [replication-0] We are too stale to use 172.19.9.11:27003 as a sync source. Blacklisting this sync source because our last fetched timestamp: Timestamp(1542344943, 1) is before their earliest timestamp: Timestamp(1543387334, 5953) for 1min until: 2018-11-28T06:47:55.783+0000報錯節點數據太”陳舊:stale”了;網絡異常或者節點異常,太久沒有進行同步數據操作,而導致其他節點的數據操作日志已經覆蓋,所以本節點被認為 stale,無法從其他節點同步數據。
1:停掉數據庫,直接刪除異常節點(shard)本地數據,然后啟動mongo數據庫,啟動之后存在一個同步的過程,根據數據量、網絡、磁盤性能等因素所需時間不同。
2:停掉數據庫,直接拷貝主節點上的數據,然后再啟動mongo,這樣就不存在數據同步的過程了.問題,就是數據時刻在變化,拷貝過程中難免會漏掉一些數據。
我們的mongodb集群是使用docker拉起的,使用方案 1;
首先確定異常分片節點==》然后確定映射目錄==》刪除異常分片實例數據目錄==》docker 服務會自動拉起服務==》集群開始數據恢復;
/mongo localhost:27017/admin
:PRIMARY> rs.status();
                {
                        "_id" : 2,
                        "name" : "172.19.9.13:27003",   《== 節點信息
                        "health" : 1,
                        "state" : 5,
                        "stateStr" : "RECOVERING",      《== 異常狀態
                        "uptime" : 64,
                        "optime" : {
                                "ts" : Timestamp(0, 0),
                                "t" : NumberLong(-1)
                        },數據目錄:/data/shard3     
ssh $HOSTNAME       
cd /data/       
rm -rf shard3刪除數據目錄后,容器異常,集群會自動拉起新的一個docker 實例運行 shard 3實例;
STARTUP2表示正在初始化并同步數據,會看到數據目錄文件在不停增加文件。
/mongo localhost:27017/admin
:PRIMARY> rs.status();
                {
                        "_id" : 2,
                        "name" : "172.19.9.13:27003",
                        "health" : 1,
                        "state" : 5,
                        "stateStr" : "STARTUP2",    《===表示正在初始化并同步數據。
                        "uptime" : 64,
                        "optime" : {
                                "ts" : Timestamp(0, 0),
                                "t" : NumberLong(-1)
                        },
/mongo localhost:27017/admin
:PRIMARY> rs.status();
                        "_id" : 2,
                        "name" : "172.19.9.13:27003",
                        "health" : 1,
                        "state" : 2,
                        "stateStr" : "SECONDARY",     <== 一段時間后狀態恢復正常
                        "uptime" : 945196,
                        "optime" : {
                                "ts" : Timestamp(1543401694, 1),
                                "t" : NumberLong(1)
                        },
同步數據時候比較耗費資源,推薦在系統訪問量最低的時間段進行。防止數據大量更新滯后,降低集群數據恢復風險。
另外有需要云服務器可以了解下創新互聯scvps.cn,海內外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業上云的綜合解決方案,具有“安全穩定、簡單易用、服務可用性高、性價比高”等特點與優勢,專為企業上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。
                本文名稱:mongodb集群shard狀態異常:RECOVERING-創新互聯
                
                標題路徑:http://www.yijiale78.com/article4/ceeoie.html
            
成都網站建設公司_創新互聯,為您提供網站建設、用戶體驗、品牌網站設計、微信公眾號、網站制作、外貿網站建設
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯
