本文介紹的是基于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/