Mongodb 作為副本集
我們將建立 mongodb 作為具有 3 個例項的副本集。一個例項是主要的,另外兩個例項是次要的。
為簡單起見,我將在同一伺服器上執行 3 個 mongodb 例項的副本集,從而實現這一點,所有三個 mongodb 例項將在不同的埠號上執行。
在生產環境中,如果你在單個伺服器上執行專用的 mongodb 例項,則可以重用相同的埠號。
- 建立資料目錄(mongodb 資料將儲存在檔案中的路徑)
- mkdir c:\data\server1 (datafile path for instance 1)
- mkdir c:\data\server2 (datafile path for instance 2)
- mkdir c:\data\server3 (datafile path for instance 3)
- 一個。啟動第一個 mongod 例項
- 開啟命令提示符並鍵入以下按 Enter 鍵。
mongod --replSet s0 --dbpath c:\data\server1 --port 37017 --smallfiles --oplogSize 100
上面的命令將 mongodb 的例項與 replicaSet 名稱 s0
相關聯,並使用 oplogSize 100MB 在埠 37017 上啟動 mongodb 的第一個例項
- 灣同樣啟動 Mongodb 的第二個例項
mongod --replSet s0 --dbpath c:\data\server2 --port 37018 --smallfiles --oplogSize 100
上面的命令將 mongodb 的例項與 replicaSet 名稱 s0
相關聯,並使用 oplogSize 100MB 在埠 37018 上啟動 mongodb 的第一個例項
- C。現在開始 Mongodb 的第三個例項
mongod --replSet s0 --dbpath c:\data\server3 --port 37019 --smallfiles --oplogSize 100
上面的命令將 mongodb 的例項與 replicaSet 名稱 s0
相關聯,並使用 oplogSize 100MB 在埠 37019 上啟動 mongodb 的第一個例項
隨著所有 3 個例項的啟動,這 3 個例項目前彼此獨立。我們現在需要將這些例項分組為副本集。我們在配置物件的幫助下完成此操作。
3.a 通過 mongo shell 連線到任何 mongod 伺服器。為此,請開啟命令提示符並鍵入。
mongo --port 37017
連線到 mongo shell 後,建立一個配置物件
var config = {"_id":"s0", members[]};
此配置物件有 2 個屬性
-
- _id:副本集的名稱(
s0
) - 成員:[](成員是一個 mongod 例項的陣列。暫時讓我們保持空白,我們將通過 push 命令新增成員。
- _id:副本集的名稱(
3.b 將 mongod 例項推送(新增)到 config 物件中的 members 陣列。關於 mongo shell 型別
config.members.push({"_id":0,"host":"localhost:37017"});
config.members.push({"_id":1,"host":"localhost:37018"});
config.members.push({"_id":2,"host":"localhost:37019"});
我們為每個 mongod 例項分配一個_id 和一個主機。 _id 可以是任何唯一編號,主機應該是執行它的伺服器的主機名,後跟埠號。
- 通過 mongo shell 中的以下命令啟動配置物件。
rs.initiate(config)
- 給它幾秒鐘,我們有一個在伺服器上執行的 3 個 mongod 例項的副本集。鍵入以下命令以檢查副本集的狀態,並確定哪個是主要的,哪個是次要的。
rs.status();