但也因為這問題發現很多可以設定的點
以及可以避免修復過程中的問題
問題發生的過程:
1. 同步錯誤
Master因某種問題和Slave同步失敗會噴下面這個訊息
Several users have reported crashes with the message "[repl writer worker 10] writer worker caught exception: :: caused by :: 26 Failed to apply insert due to missing collection" when replicating a write.後來找到網頁是說可能是某種bug在3.2.1版中修改成如果找不到collection就drop
但我安裝3.4.4時(找不到3.2.1) 卻沒有解決這問題,
所以我就把node單獨啟動後,
手動加入消失的collecitons後就好了...
但接下來又發生其他問題
2. Slave回來後發生短暫的idle狀態
由於client90%都是slave優先的連線方法
因此當slave解決同步問題後上線了
但沒想到上線後仍需要和master確認其餘的opts commands
結果造成整個系統連線資料庫timeout
(依目前資料量大概idel 10~15 分鐘)
解法:
1. 消失什麼就手動補什麼,多出什麼就砍什麼(幸運的話就會回來),長期而言就更新mongo版本吧......
2. 上線前先把priority改為0, 並用hidden把slave藏起來不給用
以下連上primary node操作
cfg = rs.conf() cfg.members[0].priority = 0 cfg.members[0].hidden = true rs.reconfig(cfg)
等到同步穩定後在把priority和hidden改回來
沒有留言:
張貼留言