天天看點

MongDB 副本集搭建副本集

官方網站:https://docs.mongodb.com/v3.4/reference/replication/

中文網站:http://www.mongodb.org.cn/manual/method-replication/

權限表參考:

副本集搭建參考

測試環境搭建mongo監控

監控mongodb使用的使用者,在不指定資料庫名稱的情況下,一般是admin庫,是以監控使用者要在admin下建立,同時授權的權限為clusterMonitor,執行serverStatus

use admin
db.createUser({user:"monitor_mongo",pwd:"monitor_mongo@123",roles:[{role:"clusterMonitor",db:"admin"}]})           

檢視所有使用者:

use admin;
db.system.users.find()           

删除使用者:

db.dropUser("")           

删除資料庫:

> use monitor_mongo;
switched to db monitor_mongo
> show users;
> db.dropDatabase()
{ "dropped" : "monitor_mongo", "ok" : 1 }           

搭建副本集

===auth啟動服務

保證所有節點使用相同的秘鑰

echo "this is rs1 super secret key" > /opt/mongodb/keyFile
chmod 600 /opt/mongodb/keyFile           

使用配置檔案auth啟動服務時,先進行叢集初始化後,在設定密碼

config={_id:"rs0",members:[{_id:0,host:"192.168.1.221:23183"}]}
rs.initiate(config)
db.createUser({user:"root",pwd:"ops2017!2#",roles:[{role:"root",db:"admin"}]})
rs.add("20.10.1.31:27018")           

如果第一次config寫錯了,那麼可以使用相應指令修改

config={_id:"rs0",members:[{_id:0,host:"192.168.1.221:11111"}]}
rs.reconfig(config)           

檢視叢集狀态:

rs.status()           

檢視配置情況:

db._adminCommand({getCmdLineOpts:1})           

==========叢集測試:節點數量必須>=3,在主庫故障時才可以選舉剩餘節點為主;當機節點數超過總數一半,也無法選舉新的主。

Primary:

rs0:PRIMARY> use test
switched to db test
rs0:PRIMARY> db.test.insert({1:1})
WriteResult({ "nInserted" : 1 })
rs0:PRIMARY> db.test.find()
{ "_id" : ObjectId("5c80bfa19d287f61d98d24b5"), "1" : 1 }           
rs0:SECONDARY> rs.slaveOk()
rs0:SECONDARY> db.test.find()
{ "_id" : ObjectId("5c80bfa19d287f61d98d24b5"), "1" : 1 }           
rs.conf()
{
    "_id" : "rs0",
    "version" : 4,
    "protocolVersion" : NumberLong(1),
    "members" : [
        {
            "_id" : 0,
            "host" : "192.168.1.221:23183",
            "arbiterOnly" : false,
            "buildIndexes" : true,
            "hidden" : false,
            "priority" : 1,
            "tags" : {

            },
            "slaveDelay" : NumberLong(0),
            "votes" : 1
        },