中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

mongodb主從復制_動力節點Java學院整理

發布時間:2020-09-03 21:03:03 來源:腳本之家 閱讀:130 作者:huangxincheng 欄目:MongoDB數據庫

從這一篇開始我們主要討論mongodb的部署技術。

我們知道sql server能夠做到讀寫分離,雙機熱備份和集群部署,當然mongodb也能做到,實際應用中我們不希望數據庫采用單點部署,如果碰到數據庫宕機或者被毀滅性破壞那是多么的糟糕。

一:主從復制

1: 首先看看模型圖

mongodb主從復制_動力節點Java學院整理

2: 從上面的圖形中我們可以分析出這種架構有如下的好處:

<1> 數據備份。

<2> 數據恢復。

<3> 讀寫分離。

3:下面我們就一一實踐

實際應用中我們肯定是多服務器部署,限于自己懶的裝虛擬機,就在一臺機器上實踐了。

第一步:我們把mongodb文件夾放在D盤和E盤,模擬放在多服務器上。

第二步:啟動D盤上的mongodb,把該數據庫指定為主數據庫,其實命令很簡單:>mongodb --dbpath='XXX' --master,

端口還是默認的27017.

mongodb主從復制_動力節點Java學院整理

第三步:同樣的方式啟動E盤上的mongodb,指定該數據庫為從屬數據庫,命令也很簡單,當然我們要換一個端口,比如:8888。

source 表示主數據庫的地址。

>mongod --dbpath=xxxx --port=8888 --slave --source=127.0.0.1:27017

mongodb主從復制_動力節點Java學院整理

第四步:從圖中的紅色區域我們發現了一條:“applied 1 operations"這樣的語句,并且發生的時間相隔10s,也就說明從屬數據庫每10s

就向主數據庫同步數據,同步依據也就是尋找主數據庫的”OpLog“日志,可以在圖中紅色區域內發現”sync_pullOpLog“字樣。

接下來我們要做的就是測試,驚訝的發現數據已經同步更新,爽啊。

mongodb主從復制_動力節點Java學院整理

4:如果我還想增加一臺從屬數據庫,但是我不想在啟動時就指定,而是后期指定,那么mongodb可否做的到呢?答案肯定是可以的。

我們的主或者從屬數據庫中都有一個叫做local的集合,主要是用于存放內部復制信息。

好,那么我們就試一下,我在F盤再拷貝一份mongodb的運行程序,cmd窗口好多啊,大家不要搞亂了。

mongodb主從復制_動力節點Java學院整理

看上面的log,提示沒有主數據庫,沒關系,某一天我們良心發現,給他后期補貼一下,哈哈,再開一個cmd窗口,語句也就是

在sources中add一個host地址,最后發現數據也同步到127.0.0.1:5555這臺從屬數據庫中....

mongodb主從復制_動力節點Java學院整理

5: 讀寫分離

這種手段在大一點的架構中都有實現,在mongodb中其實很簡單,在默認的情況下,從屬數據庫不支持數據的讀取,但是沒關系,

在驅動中給我們提供了一個叫做“slaveOkay"來讓我們可以顯示的讀取從屬數據庫來減輕主數據庫的性能壓力,這里就不演示了。

二:副本集

這個也是很牛X的主從集群,不過跟上面的集群還是有兩點區別的。

<1>: 該集群沒有特定的主數據庫。

<2>: 如果哪個主數據庫宕機了,集群中就會推選出一個從屬數據庫作為主數據庫頂上,這就具備了自動故障恢復功能,很牛X的啊。

好,我們現在就來試一下,首先把所有的cmd窗口關掉重新來,清掉db下的所有文件。

第一步: 既然我們要建立集群,就得取個集群名字,這里就取我們的公司名shopex, --replSet表示讓服務器知道shopex下還有其他數據庫,

這里就把D盤里面的mongodb程序打開,端口為2222。指定端口為3333是shopex集群下的另一個數據庫服務器。

mongodb主從復制_動力節點Java學院整理

第二步: 既然上面說3333是另一個數據庫服務器,不要急,現在就來開,這里把E盤的mongodb程序打開。

mongodb主從復制_動力節點Java學院整理

第三步: ok,看看上面的日志紅色區域,似乎我們還沒有做完,是的,log信息告訴我們要初始化一下“副本集“,既然日志這么說,那我也就

這么做,隨便連接一下哪個服務器都行,不過一定要進入admin集合。

mongodb主從復制_動力節點Java學院整理

第四步: 開啟成功后,我們要看看誰才能成為主數據庫服務器,可以看到端口為2222的已經成為主數據庫服務器。

mongodb主從復制_動力節點Java學院整理

第五步:我們知道sql server里面有一個叫做仲裁服務器,那么mongodb中也是有的,跟sql server一樣,仲裁只參與投票選舉,這里我們

把F盤的mongodb作為仲裁服務器,然后指定shopex集群中的任一個服務器端口,這里就指定2222。

mongodb主從復制_動力節點Java學院整理

然后我們在admin集合中使用rs.addArb()追加即可。

mongodb主從復制_動力節點Java學院整理

追加好了之后,我們使用rs.status()來查看下集群中的服務器狀態,圖中我們可以清楚的看到誰是主,還是從,還是仲裁。

mongodb主從復制_動力節點Java學院整理

不是說該集群有自動故障恢復嗎?那么我們就可以來試一下,在2222端口的cmd服務器按Ctrl+C來KO掉該服務器,立馬我們發現

在3333端口的從屬服務器即可頂上,最后大家也可以再次使用rs.status()來看下集群中服務器的狀態。

mongodb主從復制_動力節點Java學院整理

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持億速云。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

肥城市| 莲花县| 卓尼县| 顺昌县| 康乐县| 防城港市| 察哈| 恩施市| 东安县| 揭西县| 得荣县| 新泰市| 绩溪县| 志丹县| 安徽省| 浦江县| 鄂托克前旗| 衡阳县| 湟中县| 九江县| 雅江县| 乌审旗| 分宜县| 灵宝市| 新化县| 且末县| 额敏县| 唐海县| 丰原市| 祁连县| 红桥区| 隆尧县| 杨浦区| 新巴尔虎右旗| 龙里县| 环江| 麻栗坡县| 乡城县| 南川市| 博罗县| 铁岭市|