1. 程式人生 > >MongoDB複製集搭建(Windows)

MongoDB複製集搭建(Windows)

叢集環境準備

  首先確保Windows下安裝了Mongodb,具體下載地址載網址是:https://www.mongodb.com/download-center#community。 直接下載msi安裝版:mongodb-win32-x86_64-2008plus-ssl-3.4.3-signed.msi。下載後進行安裝(可以自定義安裝目錄)。

複製集搭建

  1. 在某盤建立存放Mongodb複製集的資料夾,並將之前Mondb(單機)的安裝檔案複製3份到該複製集資料夾下,並分別命名為Mongodb1、Mongodb2、Mongodb3。

  1. 在複製集資料夾下建立data資料夾,主要用於存放複製集的相關資料。進入data資料夾下,分別建立data、key、log資料夾。Data存放資料,key存放相同的金鑰,log儲存節點日誌。
  2. 進入data資料夾下,分別建立3個資料夾,用於存放各個節點的資料,這裡起名分別為r1、r2、r3,分別存放節點資料。
  3. 進入存放複製集的祕鑰資料夾,建立一個txt檔案,在檔案中寫入一些資料,然後複製2份,一定要保證各個節點的祕鑰檔案內容一致,否則複製集建立失敗。
  4. 複製集的中的祕鑰檔案內容可以由使用者自己設定,只要保持三個節點的內容是一致即可。
  5. 在日誌資料夾下分別建立3個日誌檔案,用於存放各個節點的日誌資訊。
  6. 在mongodb1/bin 目錄下,按shift+右鍵,選擇在此處開啟命令提示行,執行初始化mongodb操作,同樣在mongodb2/bin, mongodb3/bin執行相應的操作。
  7. 構建複製集,執行命令:mongod.exe --replSet  (複製集名稱)  --port (埠號) --dbpath (資料儲存位置) --logpath=(日誌具體檔案,包含字尾名) –logappend,需要說明的是:三個節點的複製集名稱必須保持一致,由於我們是在同一臺機器上開啟三個節點,故每個節點的埠號不能重複。-–logappend表示日誌資訊是追加的模式。實現如下:
  1. 節點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. 節點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. 節點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

執行命令後,會進入等待狀態:檢視日誌檔案後,會有等待連線相應的埠的提示:

  1.  在任意一個節點的bin目錄下開啟一個命令提示行,然後用mongo連線。連線命令:mongo.exe –port (主節點埠號)

  1. 進一步配置節點資訊,並初始化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});

  1. priority:用於配置優先順序的,當priority=0時,說明這個例項永遠不可能被設定成primary,只能作為一個slave存在。當所有節點都不設定優先順序時,則由系統選舉出primary。複製集啟動後,可以在日誌檔案中檢視。

  1. 可以執行 rs.status()來檢視複製集的狀態。說明如下:

  1. _id 表名節點id,health:例項正常與否的標記,1代表正常,0代表異常
  2. state:該節點在複製集中充當的角色,1代表primary,0代表slave
  3. 除了用rs.status()檢視複製集中各成員節點的狀態之外,還可以用rs.isMaster命令檢視Replica Sets狀態,至此,mongodb的複製集安裝完畢。如下圖所示: