MongoDB複製集搭建(Windows)
阿新 • • 發佈:2019-01-04
叢集環境準備
首先確保Windows下安裝了Mongodb,具體下載地址載網址是:https://www.mongodb.com/download-center#community。 直接下載msi安裝版:mongodb-win32-x86_64-2008plus-ssl-3.4.3-signed.msi。下載後進行安裝(可以自定義安裝目錄)。
複製集搭建
- 在某盤建立存放Mongodb複製集的資料夾,並將之前Mondb(單機)的安裝檔案複製3份到該複製集資料夾下,並分別命名為Mongodb1、Mongodb2、Mongodb3。
- 在複製集資料夾下建立data資料夾,主要用於存放複製集的相關資料。進入data資料夾下,分別建立data、key、log資料夾。Data存放資料,key存放相同的金鑰,log儲存節點日誌。
- 進入data資料夾下,分別建立3個資料夾,用於存放各個節點的資料,這裡起名分別為r1、r2、r3,分別存放節點資料。
- 進入存放複製集的祕鑰資料夾,建立一個txt檔案,在檔案中寫入一些資料,然後複製2份,一定要保證各個節點的祕鑰檔案內容一致,否則複製集建立失敗。
- 複製集的中的祕鑰檔案內容可以由使用者自己設定,只要保持三個節點的內容是一致即可。
- 在日誌資料夾下分別建立3個日誌檔案,用於存放各個節點的日誌資訊。
- 在mongodb1/bin 目錄下,按shift+右鍵,選擇在此處開啟命令提示行,執行初始化mongodb操作,同樣在mongodb2/bin, mongodb3/bin執行相應的操作。
- 構建複製集,執行命令:mongod.exe --replSet (複製集名稱) --port (埠號) --dbpath (資料儲存位置) --logpath=(日誌具體檔案,包含字尾名) –logappend,需要說明的是:三個節點的複製集名稱必須保持一致,由於我們是在同一臺機器上開啟三個節點,故每個節點的埠號不能重複。-–logappend表示日誌資訊是追加的模式。實現如下:
- 節點1:mongod.exe --replSet mongodbcluster --port 28010 --keyFile d:\mongodbcluster\data\key\key1.txt --dbpath d:\mongodbcluster\data\data\r1 --logpath=d:\mongodbcluster\data\log\log1.log --logappend
- 節點2:mongod.exe --replSet mongodbcluster --port 28011 --keyFile d:\mongodbcluster\data\key\key2.txt --dbpath d:\mongodbcluster\data\data\r2 --logpath=d:\mongodbcluster\data\log\log2.log --logappend
- 節點3:mongod.exe --replSet mongodbcluster --port 28012 --keyFile d:\mongodbcluster\data\key\key3.txt --dbpath d:\mongodbcluster\data\data\r3 --logpath=d:\mongodbcluster\data\log\log3.log --logappend
執行命令後,會進入等待狀態:檢視日誌檔案後,會有等待連線相應的埠的提示:
- 在任意一個節點的bin目錄下開啟一個命令提示行,然後用mongo連線。連線命令:mongo.exe –port (主節點埠號)
- 進一步配置節點資訊,並初始化Replica Sets環境,執行下面的js程式碼
var conf = {
_id : "mongodbcluster",
members : [
{ _id : 2, host : "localhost:28011"},
{ _id : 1, host : "localhost:28010"},
{ _id : 3, host : "localhost:28012"}
]
}
rs.initiate(conf);
//強制重新初始化操作: rs.reconfig(conf,{ "force":true});
- priority:用於配置優先順序的,當priority=0時,說明這個例項永遠不可能被設定成primary,只能作為一個slave存在。當所有節點都不設定優先順序時,則由系統選舉出primary。複製集啟動後,可以在日誌檔案中檢視。
- 可以執行 rs.status()來檢視複製集的狀態。說明如下:
- _id 表名節點id,health:例項正常與否的標記,1代表正常,0代表異常
- state:該節點在複製集中充當的角色,1代表primary,0代表slave
- 除了用rs.status()檢視複製集中各成員節點的狀態之外,還可以用rs.isMaster命令檢視Replica Sets狀態,至此,mongodb的複製集安裝完畢。如下圖所示: