您好,登錄后才能下訂單哦!
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)
},
同步數據時候比較耗費資源,推薦在系統訪問量最低的時間段進行。防止數據大量更新滯后,降低集群數據恢復風險。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。