MongoDB入門教程之主從復(fù)制配置詳解
從這一篇開始我們主要討論mongodb的部署技術(shù)。
我們知道sql server能夠做到讀寫分離,雙機(jī)熱備份和集群部署,當(dāng)然mongodb也能做到,實(shí)際應(yīng)用中我們不希望數(shù)據(jù)庫采用單點(diǎn)部署,
如果碰到數(shù)據(jù)庫宕機(jī)或者被毀滅性破壞那是多么的糟糕。
一:主從復(fù)制
1: 首先看看模型圖
2: 從上面的圖形中我們可以分析出這種架構(gòu)有如下的好處:
<1> 數(shù)據(jù)備份。
<2> 數(shù)據(jù)恢復(fù)。
<3> 讀寫分離。
3:下面我們就一一實(shí)踐
實(shí)際應(yīng)用中我們肯定是多服務(wù)器部署,限于自己懶的裝虛擬機(jī),就在一臺機(jī)器上實(shí)踐了。
第一步:我們把mongodb文件夾放在D盤和E盤,模擬放在多服務(wù)器上。
第二步:啟動D盤上的mongodb,把該數(shù)據(jù)庫指定為主數(shù)據(jù)庫,其實(shí)命令很簡單:>mongodb --dbpath='XXX' --master,
端口還是默認(rèn)的27017.
第三步:同樣的方式啟動E盤上的mongodb,指定該數(shù)據(jù)庫為從屬數(shù)據(jù)庫,命令也很簡單,當(dāng)然我們要換一個端口,比如:8888。
source 表示主數(shù)據(jù)庫的地址。
>mongod --dbpath=xxxx --port=8888 --slave --source=127.0.0.1:27017

第四步:從圖中的紅色區(qū)域我們發(fā)現(xiàn)了一條:“applied 1 operations"這樣的語句,并且發(fā)生的時間相隔10s,也就說明從屬數(shù)據(jù)庫每10s
就向主數(shù)據(jù)庫同步數(shù)據(jù),同步依據(jù)也就是尋找主數(shù)據(jù)庫的”O(jiān)pLog“日志,可以在圖中紅色區(qū)域內(nèi)發(fā)現(xiàn)”sync_pullOpLog“字樣。
接下來我們要做的就是測試,驚訝的發(fā)現(xiàn)數(shù)據(jù)已經(jīng)同步更新,爽啊。
4: 如果我還想增加一臺從屬數(shù)據(jù)庫,但是我不想在啟動時就指定,而是后期指定,那么mongodb可否做的到呢?答案肯定是可以的。
我們的主或者從屬數(shù)據(jù)庫中都有一個叫做local的集合,主要是用于存放內(nèi)部復(fù)制信息。
好,那么我們就試一下,我在F盤再拷貝一份mongodb的運(yùn)行程序,cmd窗口好多啊,大家不要搞亂了。
看上面的log,提示沒有主數(shù)據(jù)庫,沒關(guān)系,某一天我們良心發(fā)現(xiàn),給他后期補(bǔ)貼一下,哈哈,再開一個cmd窗口,語句也就是
在sources中add一個host地址,最后發(fā)現(xiàn)數(shù)據(jù)也同步到127.0.0.1:5555這臺從屬數(shù)據(jù)庫中....
5: 讀寫分離
這種手段在大一點(diǎn)的架構(gòu)中都有實(shí)現(xiàn),在mongodb中其實(shí)很簡單,在默認(rèn)的情況下,從屬數(shù)據(jù)庫不支持?jǐn)?shù)據(jù)的讀取,但是沒關(guān)系,
在驅(qū)動中給我們提供了一個叫做“slaveOkay"來讓我們可以顯示的讀取從屬數(shù)據(jù)庫來減輕主數(shù)據(jù)庫的性能壓力,這里就不演示了。
二:副本集
這個也是很牛X的主從集群,不過跟上面的集群還是有兩點(diǎn)區(qū)別的。
<1>: 該集群沒有特定的主數(shù)據(jù)庫。
<2>: 如果哪個主數(shù)據(jù)庫宕機(jī)了,集群中就會推選出一個從屬數(shù)據(jù)庫作為主數(shù)據(jù)庫頂上,這就具備了自動故障恢復(fù)功能,很牛X的啊。
好,我們現(xiàn)在就來試一下,首先把所有的cmd窗口關(guān)掉重新來,清掉db下的所有文件。
第一步: 既然我們要建立集群,就得取個集群名字,這里就取我們的公司名shopex, --replSet表示讓服務(wù)器知道shopex下還有其他數(shù)據(jù)庫,
這里就把D盤里面的mongodb程序打開,端口為2222。指定端口為3333是shopex集群下的另一個數(shù)據(jù)庫服務(wù)器。
第二步: 既然上面說3333是另一個數(shù)據(jù)庫服務(wù)器,不要急,現(xiàn)在就來開,這里把E盤的mongodb程序打開。
第三步: ok,看看上面的日志紅色區(qū)域,似乎我們還沒有做完,是的,log信息告訴我們要初始化一下“副本集“,既然日志這么說,那我也就
這么做,隨便連接一下哪個服務(wù)器都行,不過一定要進(jìn)入admin集合。
第四步: 開啟成功后,我們要看看誰才能成為主數(shù)據(jù)庫服務(wù)器,可以看到端口為2222的已經(jīng)成為主數(shù)據(jù)庫服務(wù)器。
第五步:我們知道sql server里面有一個叫做仲裁服務(wù)器,那么mongodb中也是有的,跟sql server一樣,仲裁只參與投票選舉,這里我們
把F盤的mongodb作為仲裁服務(wù)器,然后指定shopex集群中的任一個服務(wù)器端口,這里就指定2222。
然后我們在admin集合中使用rs.addArb()追加即可。
追加好了之后,我們使用rs.status()來查看下集群中的服務(wù)器狀態(tài),圖中我們可以清楚的看到誰是主,還是從,還是仲裁。
不是說該集群有自動故障恢復(fù)嗎?那么我們就可以來試一下,在2222端口的cmd服務(wù)器按Ctrl+C來KO掉該服務(wù)器,立馬我們發(fā)現(xiàn)
在3333端口的從屬服務(wù)器即可頂上,最后大家也可以再次使用rs.status()來看下集群中服務(wù)器的狀態(tài)。
- MongoDB中javascript腳本編程簡介和入門實(shí)例
- MongoDB快速入門筆記(八)之MongoDB的java驅(qū)動操作代碼講解
- MongoDB 快速入門
- MongoDB入門教程之Windows下的MongoDB數(shù)據(jù)庫安裝圖解
- MongoDB入門教程(包含安裝、常用命令、相關(guān)概念、使用技巧、常見操作等)
- MongoDB快速入門筆記(七)MongoDB的用戶管理操作
- MongoDB入門教程之C#驅(qū)動操作實(shí)例
- MongoDB入門教程之細(xì)說MongoDB數(shù)據(jù)庫的增刪查改操作
- 零基礎(chǔ)搭建Node.js、Express、Ejs、Mongodb服務(wù)器及應(yīng)用開發(fā)入門
- MongoDB 入門指南
相關(guān)文章
MongoDB中常用操作$addToSet、$pop和$rename
本文主要介紹了MongoDB中常用操作$addToSet、$pop和$rename,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-12-12mongodb基礎(chǔ)之用戶權(quán)限管理實(shí)例教程
這篇文章主要給大家介紹了關(guān)于mongodb基礎(chǔ)之用戶權(quán)限管理的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2018-06-06Pycharm連接MongoDB數(shù)據(jù)庫安裝教程詳解
這篇文章主要介紹了Pycharm連接MongoDB數(shù)據(jù)庫安裝教程,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-11-11MongoDB數(shù)據(jù)庫forEach循環(huán)遍歷用法
這篇文章主要介紹了MongoDB數(shù)據(jù)庫forEach循環(huán)遍歷用法,需要的朋友可以參考下2014-07-07mongodb與sql關(guān)系型數(shù)據(jù)比較
今天小編就為大家分享一篇關(guān)于mongodb與sql關(guān)系型數(shù)據(jù)比較,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧2019-01-01MongoDB數(shù)據(jù)庫安裝部署及警告優(yōu)化
大家好,本篇文章主要講的是MongoDB數(shù)據(jù)庫安裝部署及警告優(yōu)化,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽2021-12-12MongoDB自動刪除過期數(shù)據(jù)的方法(TTL索引)
這篇文章主要給大家介紹了關(guān)于MongoDB自動刪除過期數(shù)據(jù)(TTL索引)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2018-11-11MongoDB db.serverStatus()輸出內(nèi)容中文注釋
這篇文章主要介紹了MongoDB db.serverStatus()輸出內(nèi)容中文注釋,本文收集了2個版本的中文注釋來講解,需要的朋友可以參考下2014-08-08