標籤:
前面我說到了,MongoDB資料庫支援伺服器之間的資料複製。支援主從模式及伺服器之間的相互複製。目的當然是實現負載平衡與故障恢複。Mongo中內建了兩種技術:主從複製、複本集。下面就簡單介紹這兩種模式的配置。
一、 主從複製
主從複製是一個簡單的資料庫同步備份的叢集技術。模型如下:
需要注意:
在資料庫叢集中要明確的知道誰是主伺服器,主伺服器只有一台。
從伺服器要知道自己的資料來源,也就是自己的主伺服器是誰。
--master用來明確主伺服器,--slave和—source來控制從伺服器。
執行個體
配置其實非常簡單,類似我們前面講到的Redis的主從複製,思路如下:
我們現在起兩個MongoDB的資料庫執行個體,一個作為Master一個作為Slave,然後從Master存資料,然後看是否能從Slave中取出資料即可。步驟如下:
步驟一:
分別做好Master(用8888連接埠)和Slave(用7777連接埠)的服務端與用戶端的啟動bat檔案:
Master的檔案內容依次如下:
8888.conf:
8888mongodbStartServer.bat:
8888mongodb.bat:
Slave的檔案內容如下:
7777.conf:
7777mongodbStartServer.bat:
7777mongodb.bat:
步驟二:
雙擊Master的啟動bat檔案(8888mongodbStartServer.bat):
雙擊Slave的啟動bat檔案(7777mongodbStartServer.bat):
步驟三:
雙擊Master的用戶端啟動bat檔案(8888mongodb.bat),並建立一個資料庫,同時插入資料:
步驟四:
雙擊Slave的用戶端啟動bat檔案(7777mongodb.bat),並查詢是否存在剛剛在Master中建立的資料庫、Collection與插入的兩條資料:
這就說明,主從複製已配置成功。這裡還需要注意,Slave資料庫執行個體是不允許我們插入、修改資料的,我們只能操作Master資料庫伺服器,例如我們在Slave中插入一條資料,會報錯:
執行個體的結構圖如下:
二、 複本集
與主從複製所能達到的效果類似。主從複製模型中的Master相當於複本集中的“活躍”節點;Slave相當於“備份”節點,如:
1,表明A是活躍的,B、C是用於備份的;圖2表示,當A出現故障,這時候叢集根據權重演算法推選出B為活躍資料庫節點;圖3表示,當A恢複故障後,它自動變為了備份節點。
與主從複製不同的是,主從複製中只有一個Master,當Master節點掛掉之後,所有的Slave節點無法自動變為Master,繼續提供服務。這時所有的 Slave也就會因連不上Master而無法繼續備份資料,直到它再次連到Master。
而複本集中所有的節點都可以成為“活躍”節點(一開始是隨機推出的),噹噹前的活躍節點掛掉之後,叢集會立即從其它完好的備份節點中推選出一個節點作為“活躍節點”,整個複本集群不會停止備份服務。
配置
配置與主從複製的配置相似,這裡不再像上面那麼詳細的一步步介紹,直接給出大概配置:
準備三套MongoDB的啟動配置:(監聽不同的連接埠)
三個啟動配置(A/B/C.conf)如下:
先啟動Mongo的三個服務端執行個體,並初始化複本集:
然後,啟動Mongo的用戶端執行個體,啟動後可以看出哪個活躍節點,哪些是備份節點:
然後就可以做類似“主從複製”的執行個體來驗證我們是否配置成功。
著作權聲明:本文為博主原創文章,未經博主允許不得轉載。
MongoDB——主從複製&複本集