Mongodbreplicaset模式篇-創(chuàng)新互聯

復制集架構圖:

創(chuàng)新互聯公司的客戶來自各行各業(yè),為了共同目標,我們在工作上密切配合,從創(chuàng)業(yè)型小企業(yè)到企事業(yè)單位,感謝他們對我們的要求,感謝他們從不同領域給我們帶來的挑戰(zhàn),讓我們激情的團隊有機會用頭腦與智慧不斷的給客戶帶來驚喜。專業(yè)領域包括成都做網站、網站設計、電商網站開發(fā)、微信營銷、系統平臺開發(fā)。

Mongodb replica set模式篇

三節(jié)點replicaset配置安裝(無仲裁節(jié)點)

Replica set 【10.10.20.161-10.10.20.163】

10.10.20.161-10.10.20.163這三臺按下面的安裝:

mkdir -p/u01/mongodb/data/replset/

mkdir -p/u01/mongodb/log/

/usr/local/mongodb/bin/mongod--replSet myrepl --fork --port 40001 --dbpath /u01/mongodb/data/replset/--logpath /u01/mongodb/log/replset.log --logappend --oplogSize=4096

然后在建立集群,想讓哪臺當主就登陸哪臺的服務器的mongo,然后添加如下配置

/usr/local/mongodb/bin/mongo-port 40001

config ={_id: 'myrepl', members: [{_id: 0, host: '10.10.20.161:40001'}, {_id: 1, host:'10.10.20.162:40001'},{_id: 3, host: '10.10.20.163:40001'}]}

rs.initiate(config)

配置完畢后退出再登陸會顯示primary字樣

/usr/local/mongodb/bin/mongo-port 40001

MongoDBshell version: 2.2.2

connectingto: 127.0.0.1:40001/test

myrepl:PRIMARY>

而另外兩個則顯示myrepl:SECONDARY

三節(jié)點replicaset配置安裝(有仲裁節(jié)點)

三節(jié)點無仲裁的好處就是一個master寫,兩個slave讀。缺點是,我現在只有兩臺機器,也想做replica set,這樣就出現了問題,如果只有兩臺的話,如果master宕機的話,那么只有slave一臺,投票算法無法進行,所以slave無法提升為master只能只讀,但是如果有一個仲裁節(jié)點的話,就可以完成切換,仲裁節(jié)點只負責投票不需要同步數據。

添加仲裁節(jié)點也很簡單

配置好1主1從節(jié)點后添加rs.add('10.10.20.163:40001',true)或者用rs.addArb('10.10.20.163:40001');

也可在第一次配置時添加

config ={_id: 'myrepl', members: [{_id: 0, host: '10.10.20.161:40001'}, {_id: 1, host:'10.10.20.162:40001'},{_id: 3, host: '10.10.20.163:40001', arbiterOnly: true}]}

rs.initiate(config)

讀寫分離:

默認做好Replica set的時候,slave是不開讀的只能做故障切換用,這樣比較浪費,為了分擔主上的壓力,應該讓slave可讀,方法是在slave服務器上執(zhí)行rs.slaveOk()

手動切換master

如果當前master出現問題,我們想把它降級成slave,那么非常簡單,我們只用登陸master上執(zhí)行rs.stepDown(10),這個命令的意思是10秒不會參與選舉master,當執(zhí)行完后復制集會從其他slave中選一個提升為master。其實手動切換master除了這個命令還有個方法就是比較復雜,就是修改config,設置優(yōu)先級,然后重新加載。還有個命令某些時候會用到rs.freeze(10)是在slave上使用的,意思是10秒內不參與master的選舉,如果我們在手動切換master的時候,我們不想讓某些slave做master可以使用這個命令。

replica set相關命令:

rs.status():查看復制集狀態(tài)信息

rs.conf():查看復制集配置信息

replica set節(jié)點的刪除與添加:

假設我們現在需要對其中一個節(jié)點10.10.20.163進行維護,那我們需要,需要執(zhí)行的命令如下

登陸master

執(zhí)行rs.remove("10.10.20.163:40001")

等維護完之后再執(zhí)行rs.add("10.10.20.163:40001")添加節(jié)點即可,但是如果下線時間太久,導致oplog已經被覆蓋,那么用rs.add添加節(jié)點后10.10.20.163的同步將會停止。而且會有報錯Thu Feb 28 09:58:00[rsBackgroundSync] replSet not trying to sync from 10.10.20.162:40001, it isvetoed for 133 more seconds。

replica set節(jié)點同步失敗處理方法:

接著上面的話題,如果同步出現問題,有兩個方法解決

  1. 將一臺同步完好的節(jié)點remove然后將數據目錄scp過來再啟動

  2. 將那個不同步的節(jié)點的數據目錄刪除,然后啟動,mongodb會自動為你做好同步

replicaset何時會切換失效:

這是一個很重要的知識點,就是replica set的成員節(jié)點,一旦宕機數量超過一半的時候,PRIMARY會自動降級成為SECONDARY,這時集群里只能只讀,這時為了防止由于網絡原因集群被分割成多塊選出多個主。所以為了保證剩余的機器仍可切換為主,可添加多個仲裁節(jié)點。

例如:1主+2從+1仲裁

一共4個節(jié)點,一半就是2,那么如果2個從庫宕機之后,那個主就會自動降級為從,這時這個replica set是不可寫入的,所以不可用。

那么要解決這個問題就可以采用:1主+2從+2仲裁,這樣的話宕2個從庫達不到節(jié)點總數的一半,所以也不會對集群有影響。

修改slave的同步源(mongo 2.2新特性):

集群搭好之后,一般來說slave都是從master那里同步,如果如果slave很多的話master壓力很大,我們可以讓某些slave從其他的slave來同步數據,使用rs.syncFrom("10.10.20.163:40001")語句來執(zhí)行這臺slave從哪臺同步,要注意如果這臺slave重啟后這個設置會失效。

另外有需要云服務器可以了解下創(chuàng)新互聯cdcxhl.cn,海內外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。

新聞名稱:Mongodbreplicaset模式篇-創(chuàng)新互聯
轉載注明:http://bm7419.com/article38/gdosp.html

成都網站建設公司_創(chuàng)新互聯,為您提供網站設計公司網站設計、網站營銷手機網站建設、網站建設面包屑導航

廣告

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

網站優(yōu)化排名