1. 程式人生 > >MongoDB複製集搭建(Window10系統下)

MongoDB複製集搭建(Window10系統下)

一、獲取mongodb安裝包

        本示例mongo版本:mongodb-win32-x86_64-3.4.17.zip

二 、安裝mongo

(1)解壓 mongodb-win32-x86_64-3.4.17.zip,解壓之後檔名可自定義。Mongodb8881是我自定義的檔名。

(2)在解壓檔案的 bin 的同級目錄建立  data和log 目錄 , 在data目錄下建立db目錄。

(3)本次示例以配置檔案啟動,建立啟動檔案, mongo.config ,該檔案和 bin 目錄同級。

(4)編輯配置檔案mongo.config,檔案內容示例:

dbpath=C:\DEV\Mongodb8881\data\db   資料儲存目錄
logpath=C:\DEV\Mongodb8881\log\mongo.log  日誌儲存目錄
port=8881  mongodb  啟動埠
logappend=true  以追加的方式記錄日誌。不同方式可自行搜尋。

  【說明*】C:\DEV\Mongodb8881 為mongodb安裝包解壓後所對應的磁碟目錄【*】

(5)啟動Mongo ,

         進入命令列: win+R

         進入到Mongo 安裝包目錄 : cd C:\DEV\Mongodb8881

         執行命令: .\bin\mongod -config mongo.config

(6)重新開啟一個命令列視窗

         進入到mongodb 安裝包的 bin 目錄下,執行命令:mongo

         由於 mongo 預設連線的是本地的 27017 埠,所以為了連線到指定IP下的埠,需要補充IP地址和埠號

   mongo 127.0.0.1:8881

          至此,mongo 單例項安裝完畢。

三、基於單例項的複製集安裝

          上邊已經介紹了mongodb 的單例項安裝,下邊開始安裝 mongo 複製集。

          先將 mongodb 解壓出來的安裝包複製多份。

         為了方便觀察,此處我均以 啟動埠號作為 mongo安裝包的目錄字尾

【注意點】

           mongo 複製集初始化的時候,需要將從節點的資料庫全部刪除(包括預設的 local 和 admin)。主節點admin 庫不可刪除.

主節點的選用規則,一般已經有資料的一般都作為主節點。

為了下邊的敘述方便,均以埠號對應各個例項。

3-1)分別按照單例項的方式安裝四個例項,

        8881 資料庫已經包含有資料,我們就在8881 上設定複製集資訊。

(3-2)連線 8882、8883、8884,刪除他們下邊的所有資料庫。

          連線 8882

         命令:mongo 127.0.0.1:8882

         要刪除據庫A,則切換到庫A ,

         命令:db.dropDatabase();

  根據上述規則刪除所有資料庫。8883、8884 刪庫操作同8882一樣。

(3-3)關閉8881、8882、8883、8884

            修改 8881、8882、8883、8884 的配置檔案,增加複製集配置,完整配置示例:

dbpath=C:\DEV\Mongodb8881\data\db
logpath=C:\DEV\Mongodb8881\log\mongo.log
port=8881
logappend=true
# oplog的大小(MB)
oplogSize=1024 
# 副本集名稱(要確保同一個複製集名稱要一致)
replSet=groupone
# 啟用日誌選項,MongoDB的資料操作將會寫入到journal資料夾的檔案裡,該目錄位於 data\db 下
journal=true

(3-4)四個例項的配置檔案修改完成之後,啟動四個例項(必須四個示例都以複製集的方式啟動成功)

        (3-4-1)連線 8881 例項,

        (3-4-2)切換到 admin,命令列建立初始化物件 config

         config={_id:"groupone",members:[{_id:0,host:"127.0.0.1:8881"},{_id:1,host:"127.0.0.1:8882"}, {_id:2,host:"127.0.0.1:8883"},{_id:3,host:"127.0.0.1:8884"}]}

        (3-4-3)執行初始化命令: rs.initiate(config)

設定成功之後,分別連線到各個例項檢視:如下圖所示

(3-5)複製集設定成功之後,從節點如果需要在命令列執行命令,需要執行命令:

rs.slaveOk()

(3-6)複製集主節點 8882 宕機之後,重啟8882,此時舊的主節點8882 已經成為了從節點,而剩下的從節點之中會產生一個主節點。具體實際操作大家可以多嘗試幾次,這裡不再做演示。

四、 異常處理:

 (4-1)複製級例項均需新增相關配置,否則報錯如下:

(4-2)如果在設定複製機的時候報錯,部分節點已經包含有資料,就需要停止該例項,修改該例項的配置檔案,恢復到單例項狀態,再執行刪除資料庫操作。錯誤提示如下:

解決方法:

(1)先停止 8882,直接在8882上操作,不會刪除成功,原因是8882此時啟動模式是複製集模式,不是主節點是無法操作資料庫的,刪除失敗的提示如下:

(2)刪除8882 對應的mongo.config  中複製集相關配置,恢復單例項模式,以單例項模式啟動

  連線8882例項,執行(3-2)操作。

(3)8882資料全部刪除成功之後,停止8882例項 ,再把 8882 複製集相關配置加上,啟動 8882。