2016-09-16 70 views
0

我的mongodb版本是3.2.4。 我有一個包含2個數據庫節點和1個仲裁器的副本集。 所有數據庫在我的客戶網站上長時間運行良好。有一天,主數據庫因維護而停止運行。大約2個小時之後,原來的小學生被帶回了,並且再次成爲了第一個小學生,而小學二年級學生處於Rollback狀態。 我有幾個關於上述情況的問題: 當主數據庫第一次被關閉時,如果有數據庫條目沒有同步到輔助數據庫,會發生什麼? 當失敗的小學再次回來時,它成爲主要的方式嗎?在成爲主數據庫之前,它是否與現在的主數據庫同步? 我如何在給定最新的主數據庫和輔助數據庫狀態的情況下恢復回滾文件夾中丟失的數據? 感謝和問候。副本在故障轉移和恢復後設置數據庫狀態

回答

0

當您想要維護主服務器時,必須在主服務器上執行rs.stepDown()命令。這將選擇另一個DB節點成爲主節點:

  • 主要步驟關閉,它會拒絕寫入。您的應用程序會收到簡短的寫入錯誤,直到下面的下一個項目符號完成。
  • 獲得當選的次要成員將確保它在成爲主要成員之前與舊的主要成員同步。這應該發生在瞬間,但如果您有一個寫入重度應用程序,則可能需要更長的時間。
  • 當舊的主要資源恢復後,如果您將其設置爲最高優先級,它將成爲主要資源。我仍然建議對2個數據節點具有同等的優先級,並且不要返回主數據節點。推廣其他節點的過程與上面的2個重點完全相同。

如果你做了正確的stepDown,你所在的回滾狀態似乎不正常。這裏有以應用回滾一個很好的鏈接: https://scalegrid.io/blog/how-to-recover-from-a-mongodb-rollback/

0

裏克寫的很好的答案,但沒有回答你的最後一個問題...如果回滾發生,會有你的DBPATH下回滾目錄。在該目錄中,您可以在數據庫列特定的json文件中找到所有回滾的文檔。這些文件可以輸入回主...