成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

如何進行MongoDB副本集搭建

如何進行MongoDB副本集搭建,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來學(xué)習(xí)下,希望你能有所收獲。

讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來自于我們對這個行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價值的長期合作伙伴,公司提供的服務(wù)項目有:域名注冊雅安服務(wù)器托管、營銷軟件、網(wǎng)站建設(shè)、白銀區(qū)網(wǎng)站維護、網(wǎng)站推廣。

我們之前的案例都是在單個節(jié)點上實現(xiàn)的,在生產(chǎn)環(huán)境中這種做法是有風(fēng)險的,如果服務(wù)宕機、崩潰或者硬盤壞了都會對公司業(yè)務(wù)造成損失,因此我們需要數(shù)據(jù)備份。在MongoDB中我們可以通過副本集來實現(xiàn)這一需求,MongoDB副本集(Replica Set)是有自動故障恢復(fù)功能的主從集群,有一個Primary節(jié)點和一個或多個Secondary節(jié)點組成,如果Primary崩潰了,會自動從Secondary中選擇一個將其升級為新的主服務(wù)器。

單臺服務(wù)器模擬

我們在實際的生產(chǎn)環(huán)境中肯定是多臺服務(wù)器部署,但是在自己學(xué)習(xí)過程中,我們可以在一臺服務(wù)器上來模擬這個環(huán)境,這樣可以簡化我們的操作,讓小伙伴們快速上手。

首先我們在Linux根目錄下創(chuàng)建/data/db目錄作為我們的數(shù)據(jù)保存目錄,然后執(zhí)行如下命令啟動一個mongo shell:

mongo --nodb

—nodb表示啟動時不連接任何數(shù)據(jù)庫,然后通過如下命令創(chuàng)建一個副本集:

replicaSet=new ReplSetTest({nodes:3})

在創(chuàng)建的日志中,我們可以看到三個實例的端口號,我這里分別是20000、20001、20002,此時我們的副本集創(chuàng)建好了,但是并未啟動,接下來執(zhí)行如下命令啟動三個mongodb實例:

replicaSet.startSet()

再執(zhí)行如下命令配置復(fù)制功能:

replicaSet.initiate()

這樣環(huán)境基本就配好了,此時當(dāng)前的shell不要關(guān)閉,我們重新打開一個Linux命令窗口,執(zhí)行如下命令:

mongo 192.168.248.128:20000/sang_1

表示連接端口為20000的那個實例中的sang_1數(shù)據(jù)庫,連接成功后,我們可以執(zhí)行如下命令查看當(dāng)前實例的身份,如下:

db.isMaster()

返回的數(shù)據(jù)很多,其中有一條是"ismaster" : true,表示這是一個主節(jié)點,此時我們再分別打開兩個Linux窗口,分別執(zhí)行如下兩條命令,進入另外兩個節(jié)點:

mongo 192.168.248.128:20001/sang_1
mongo 192.168.248.128:20002/sang_1

連接成功之后,依然可以通過db.isMaster()命令來查看備份節(jié)點的身份,我們發(fā)現(xiàn)此時"ismaster" : false,表示這是一個備份節(jié)點,此時我們可以先做個簡單的測試了,此時我在主節(jié)點(端口為20000)那個節(jié)點上寫一個文檔,寫完之后,我們看看其他副本集成員上是否有我剛才的寫的文檔的副本,執(zhí)行命令順序如下:

主節(jié)點寫入數(shù)據(jù):

db.collect1.insert({x:"hahaha"})

任意一個副本節(jié)點,先執(zhí)行如下命令表示可以從備份節(jié)點讀取數(shù)據(jù):

db.setSlaveOk()

然后再在備份節(jié)點中執(zhí)行如下命令讀取數(shù)據(jù):

db.collect1.find()

此時,我們發(fā)現(xiàn)數(shù)據(jù)已經(jīng)備份成功了。
如果此時我們嘗試向備份節(jié)點中直接寫入文檔,會發(fā)現(xiàn)寫入失敗,這里需要注意備份節(jié)點中的數(shù)據(jù)都是備份來的,不可以直接寫入,想寫入,除非等它的身份轉(zhuǎn)為主節(jié)點才可以。

此時,我們嘗試通過如下命令關(guān)閉主節(jié)點:

use admin
db.shutdownServer()

然后查看兩個備份節(jié)點的db.isMaster(),發(fā)現(xiàn)有一個備份節(jié)點自動上位成為了主節(jié)點。

最后如果想關(guān)閉副本集,可以回到第一個shell命令行中,輸入如下命令:

replicaSet.stopSet()

多臺服務(wù)器模擬

OK,以上操作是我們單臺服務(wù)器模擬搭建副本集,方便我們做實驗,在生產(chǎn)環(huán)境中,我們可能有多個服務(wù)器,多臺服務(wù)器又要如何搭建副本集呢?各位看官繼續(xù)向下看。

首先準(zhǔn)備好三臺裝好了MongoDB的服務(wù)器,地址分別如下:

192.168.248.128
192.168.248.135
192.168.248.136

修改每臺服務(wù)器的配置文件mongodb.conf,添加replSet=rs,表示副本集的名稱,修改后的配置文件內(nèi)容如下:

dbpath=/opt/mongodb/db
logpath=/opt/mongodb/logs/mongodb.log
port=27017
fork=true
replSet=rs

修改完成之后,分別啟動三臺服務(wù)器上的MongoDB,啟動成功之后,連接上任意一臺的shell,連接成功之后,先定義配置文件,如下:

config={_id:"rs",members:[{_id:0,host:"192.168.248.128:27017"},{_id:1,host:"192.168.248.135:27017"},{_id:2,host:"192.168.248.136:27017"}]}

id后面跟著的是副本集的名稱,也就是我們在mongodb.conf中定義的名稱,后面三個是副本集的成員,定義好之后,再執(zhí)行如下命令初始化副本集:

rs.initiate(config)

初始化成功之后,我們就可以通過rs.status()來查看副本集的狀態(tài),也可以看到每個服務(wù)器的角色,部分日志內(nèi)容如下:

{
"members" : [
{
        "_id" : 0,
        "name" : "192.168.248.128:27017",
        "health" : 1,
        "state" : 1,
        "stateStr" : "PRIMARY",
},
{
        "_id" : 1,
        "name" : "192.168.248.135:27017",
        "health" : 1,
        "state" : 2,
        "stateStr" : "SECONDARY",
        "syncingTo" : "192.168.248.128:27017"
},
{
        "_id" : 2,
        "name" : "192.168.248.136:27017",
        "health" : 1,
        "state" : 2,
        "stateStr" : "SECONDARY",
        "syncingTo" : "192.168.248.128:27017",
}
]
}

我們可以看到每臺服務(wù)器的角色,有primary,也有secondary,secondary上還注明了從哪個服務(wù)器上同步數(shù)據(jù)。所有這些工作做好之后,我們就可以按照上文介紹的方式來測一下這里的副本集了,測試工作我就不再重復(fù)介紹了。

看完上述內(nèi)容是否對您有幫助呢?如果還想對相關(guān)知識有進一步的了解或閱讀更多相關(guān)文章,請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝您對創(chuàng)新互聯(lián)的支持。

本文標(biāo)題:如何進行MongoDB副本集搭建
本文路徑:http://jinyejixie.com/article2/ppsgic.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站建設(shè)關(guān)鍵詞優(yōu)化、網(wǎng)站導(dǎo)航App設(shè)計、網(wǎng)站策劃、手機網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站優(yōu)化排名