天天看點

MongoDB 副本集配置

    本文介紹的是基于Windows 平台的MongoDB副本集的搭建,MongoDB版本為Version:3.2.7,是以請注意一些相關的指令。

1、準備三台伺服器,使用者搭建副本集:OADB01,OADB02,OADBO3,分别在這三台伺服器上安裝MongoDB。.

2、用如下指令,生成Keyfile 檔案,檔案名為

echo -e "my    secret    key" >D:\ mongokey
           

3、用記事本打卡該檔案,并删除裡面的特殊符号-,“”,不然後續啟動這個檔案的時候,會提示錯誤。

4、将生成的mongokey檔案備考到每個伺服器的相同路徑,以便于後續使用。

5、分别在每台伺服器上用如下指令啟動MongoDB的服務,設定MongoDB端口,以及資料庫位址,複制集名稱。

mongod   --port 27017 --dbpath "D:\MongoDB\rsDB1" --replSet rs0 
           

6、進入shell,然後再執行如下指令進行副本集的初始化,初始化的時候因為各個伺服器之間是沒有通過使用者名密碼驗證的,是以需要先關閉防火牆,以免不能正常通訊。

use admin

db.runCommand({"replSetInitiate":

{

"_id":'rs0',

"members":[{

"_id":1,

"host":"OADB01:27017"

},{

"_id":2,

"host":"OADB02:27017"

},{

"_id":3,

"host":"OADB03:27017"

}]

}

})
           

7、當初始化副本內建功以後,我們逐個關閉副本集,最後再關閉主副本

use admin
db.shutdownServer()
           

8、再次啟動副本及,這次加入我們生成的Keyfile檔案啟動:

mongod --keyFile "D:\mongokey"  --port 27017 --dbpath "D:\MongoDB\rsDB1" --replSet rs0
           

9、檢視副本集運作情況,并确認主副本所在伺服器

rs.status()
           

10、在主副本集上打開shell,新增一個資料庫管理者賬号,注意這個集合的賬戶,當增加了一個賬戶以後,便不能采用匿名方式登入了,是以這個賬戶是後續給其他賬戶

授權的賬戶,需要一定的權限。

admin = db.getSiblingDB("admin")
admin.createUser(
  {
    user: "admin",
    pwd: "dmin12345",
    roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
  }
)
           

11、另外打開一個shell,然後用使用者名與密碼方式登入群集:

mongo -u "admin" -p "admin12345" --authenticationDatabase "admin"
           

12、登陸以後,我們可以通過這個賬戶再去增加其他的賬戶,比如:

use admin
db.createUser(
  {
    "user" : "OA",
    "pwd" : "OA",
    roles: [ { "role" : "readWriteAnyDatabase", "db" : "admin" } ]
  }
)
           

這樣,我們就可以通過新增的賬戶,連接配接資料集了,當然使用者也可以新增其他的資料管理者賬戶,具體的授權可以參考官方手冊。

參考檔案:

https://docs.mongodb.com/manual/tutorial/enforce-keyfile-access-control-in-existing-replica-set/

https://docs.mongodb.com/manual/tutorial/deploy-replica-set-with-keyfile-access-control/