簡體   English   中英

如何使用MongoDB配置副本集

[英]How to configure a replica set with MongoDB

我遇到了我無法解決的問題。 部分原因是我無法用正確的術語進行解釋。 我對此很陌生,所以很抱歉這個笨拙的問題。

您可以在下面看到我的目標概述。

我想在MongoDB中為我這樣嘗試配置復制集

use local
db.dropDatabase()

config = { _id: "rs0", members:[
{_id: 0, host: 'localhost:27017'}]
}

rs.initiate(config)

我希望每件事都是正確的,但是在這里顯示以下錯誤消息

{ "errmsg" : "server is not running with --replSet", "ok" : 0 }

我在這里做錯了什么?

有任何想法嗎 ?

您實際上可以按照MongoDB手冊來設置副本集。 很清楚 以下是一些重要步驟,如下所述:

  1. 更改配置文件並添加以下行。請勿將其與主/從復制搞混,因為副本集旨在替代主/從復制。 因此,您可能需要從配置文件中刪除那些與主/從相關的配置。

     replSet = [set name] 

    編輯replSet在mongoDB的最新版本中似乎不再存在,至少不再記錄了 在我看來,以下似乎已經解決了問題。

     replication: replSetName: "smm" 
  2. 重新啟動您的mongod實例:

     systemctl restart mongodb // or service mongod restart 
  3. 轉到本地數據庫並啟動您的副本集。 不要將任何東西傳遞給啟動函數,而mongodb會很好地處理所有事情。 請注意,它將使用您的主機名作為當前實例的名稱,並且我知道更改起來並不容易。 因此,您可能需要先更改主機名。

     use local rs.initiate() 

而已。 你的布景很好。 如果您還有其他成員加入集合,則需要執行1/2步,然后轉到主實例並鍵入:

rs.add("hostname:port")

僅當您要更改副本集的配置時,才需要輸入:

var conf = rs.conf();
// change your conf here
rs.reconfig(conf);

請注意,這將導致服務器離線一段時間。 如果您在線上進行操作,請當心。

我希望討論MongoDB中復制和副本集的概念。

我們如何獲得可用性和容錯能力? 這就是說,如果該節點出現故障,我們仍希望能夠使用該系統。 而且如果主節點出現故障,並且由於某種原因我們完全丟失了它,那么可以說備份之間丟失了,或者硬件損壞了,導致系統無法使用。 因此,為了解決這兩個問題,我們要做的就是引入復制

副本集是指一組mongodmongo節點,它們一起起作用,並且在數據方面都相互鏡像。 有一個主節點,其他節點是輔助節點。 但是,這種選擇是動態的。 並且寫入主數據庫的數據將異步復制到輔助數據庫。 應用程序和驅動程序保持與主數據庫的連接,並且將只能寫入主數據庫。 假設,如果小學選修失敗,其中一名中學將進行選舉以選舉新的小學。 要選擇一個新的主節點,我們必須擁有原始節點數的嚴格多數。 因此,由於此處的原始節點數為3 ,因此我們需要2個節點來選擇一個新的主節點,這就是我們擁有的節點數。 因此,如果一個人失敗了,那么其他任何人都可以成為主要人。 在這種情況下,該應用將通過驅動程序連接到主要權限。 全部透明。

稍后,如果關閉的服務器啟動,它將作為輔助服務器加入副本集。 最小的節點數是3-因為如果我們少於3,那么剩下的將不是原始集合的大部分。 因此,將沒有辦法選舉新的小學。 因此,我們將沒有主要權利,這意味着我們將不再擁有權利。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM