溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

MongDB 副本集

發(fā)布時間:2020-04-08 13:19:22 來源:網(wǎng)絡(luò) 閱讀:231 作者:浮生鳳年 欄目:MongoDB數(shù)據(jù)庫

官方網(wǎng)站:https://docs.mongodb.com/v3.4/reference/replication/
中文網(wǎng)站:http://www.mongodb.org.cn/manual/method-replication/
權(quán)限表參考:https://blog.csdn.net/kk185800961/article/details/45619863
副本集搭建參考:https://www.cnblogs.com/ranjiewen/p/5928994.html

測試環(huán)境搭建mongo監(jiān)控
監(jiān)控mongodb使用的用戶,在不指定數(shù)據(jù)庫名稱的情況下,一般是admin庫,所以監(jiān)控用戶要在admin下創(chuàng)建,同時授權(quán)的權(quán)限為clusterMonitor,執(zhí)行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("")

刪除數(shù)據(jù)庫:

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

搭建副本集

===auth啟動服務(wù)
保證所有節(jié)點使用相同的秘鑰

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

使用配置文件auth啟動服務(wù)時,先進(jìn)行集群初始化后,在設(shè)置密碼

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寫錯了,那么可以使用相應(yīng)命令修改

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

查看集群狀態(tài):

rs.status()

查看配置情況:

db._adminCommand({getCmdLineOpts:1})

==========集群測試:節(jié)點數(shù)量必須>=3,在主庫故障時才可以選舉剩余節(jié)點為主;宕機(jī)節(jié)點數(shù)超過總數(shù)一半,也無法選舉新的主。
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 }

SECONDARY:默認(rèn)客戶端不可以從Secondary成員獲取數(shù)據(jù),必須執(zhí)行slaveOk后才可以讀取數(shù)據(jù)。

rs0:SECONDARY> rs.slaveOk()
rs0:SECONDARY> db.test.find()
{ "_id" : ObjectId("5c80bfa19d287f61d98d24b5"), "1" : 1 }

==集群重要參數(shù)說明:

 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
        },

其中:
arbiterOnly:0或1,標(biāo)識一個仲裁(arbiter),Arbiter的唯一作用是參與Primary的選舉,Arbiter不保存數(shù)據(jù),不會為client提供服務(wù),它存在的意義就是為了選舉Primary。
hidden:0或1,表示該成員是不是隱藏成員,Hidden成員的主要作用是備份數(shù)據(jù),可以使用性能較差的服務(wù)器作為Hidden成員。Hidden成員不會接收Client的請求,也不會成為Primary。在設(shè)置Hidden成員時,必須設(shè)置members[n].priorty屬性為0。
priority:數(shù)值類型,用于設(shè)置成員成為Primary的優(yōu)先級。priority越高的成員,越有機(jī)會成為Primary。如果priority=0,那么該成員永遠(yuǎn)不會成為Primary。
votes:1或0,表示該成員的投票的數(shù)量,在每個Replica Set中,最多有7個成員,其votes屬性值是1。votes 屬性是1的成員(voting members)擁有選舉Primary的權(quán)利。一個成員要想成為一個Primary,那么必須獲得voting members的大多成員的支持。
在Replica Set中,如果voting members的數(shù)量是5,那么一個成員成為Primary的條件是:獲得超過2個voting members的支持,并且沒有任何voting members 反對。只要有任意一個voting member 反對該成員成為Primary,那么該成員就不能成為Primary。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI