標籤:inf 對比 生效 .exe 情況下 情況 路徑 資料庫
Mongodb的複本集:(有兩種情況,主從複製,複本集)
這次我來說一下mongodb的複本集,複本集的出現可以有效保證mongodb的單點問題,對資料的穩健性有一定輔助作用:
MongoDB複製:是將資料同步在多個伺服器的過程。
1.複製提供了資料的冗餘備份,並在多個伺服器上儲存資料副本,提高了資料的可用性, 並可以保證資料的安全性。
2.複製還允許您從硬體故障和服務中斷中恢複資料。
什麼是複製?
-
- 保障資料的安全性
- 資料高可用性 (24*7)
- 災難恢複
- 無需停機維護(如備份,重建索引,壓縮)
- 分布式讀取資料
MongoDB複製原理:
mongodb的複製至少需要兩個節點。其中一個是主節點,負責處理用戶端請求,其餘的都是從節點,負責複製主節點上的資料。
mongodb各個節點常見的搭配方式為:一主一從、一主多從。
主節點記錄在其上的所有操作oplog,從節點定期輪詢主節點擷取這些操作,然後對自己的資料副本執行這些操作,從而保證從節點的資料與主節點一致。
Mongodb的主從複製:
由於我本地已經裝載了一個mongodb服務,我就在本地類比兩個mongdb啟動做資料備份的操作:
1> 配置路徑如下:
2> 進入各服務下的bin目錄啟動mongodb 並指定連接埠:Server1的對應master port = 27011
mongod.exe --dbpath=E:\mongodbRs\db1 --master --port=27011
Server2下是複製的mongodb port=27012 mongod.exe --dbpath=E:\mongodbRs\db2 --port=27012 --slave --source=127.0.0.1:27011
啟動後一直監控:
3>在27011 上插入一條記錄:
27012上就能看到變化:
· 報錯的解決辦法:
注意:叢庫只允許查詢,插入會報錯
4>動態追加從屬資料庫 有印象就行,
上面介紹的是在mongodb啟動的時候,就知道主要資料是哪個,下面我來說一種動態追加的方式:
啟動mongodb,不指定主庫:mongod.exe --dbpath=E:\mongodbRs\db3 --port=27013 --slave
上面顯示資訊是指沒有master庫配置:配置方式如下:
查看mongodb3的服務啟動資訊可以查看到:slave生效了
到這動態追加從庫也配置完成:
5>讀寫分離
這種手段在大一點的架構中都有實現,在mongodb中其實很簡單,在預設的情況下,從屬資料庫不支援資料的讀取,但是沒關係,
在驅動中給我們提供了一個叫做“slaveOkay"來讓我們可以顯示的讀取從屬資料庫來減輕主要資料庫的效能壓力
對比:一主兩從
到這主從複製就基本上說完了,下面說複本集的搭建和介紹
Mongdb的複本集:
複本集的特點:
1> 複本集沒有特定的主要資料庫。
2>如果哪個主要資料庫宕機了,叢集中就會推選出一個從屬資料庫作為主要資料庫頂上,這就具備了自動故障恢複功能,
複本集在搭建過程中,要保證資料是清空的,因為我上面搭建的主從複製的資料都儲存在db1 db2 db3中,所以在搭建複本集時,要先清空資料,保證搭建複本集的純淨環境
複本集:(搭建命令)
mongod.exe --port 27011 --dbpath=E:\mongodbRs\db1 --replSet rs0
mongod.exe --port 27012 --dbpath=E:\mongodbRs\db2 --replSet rs0
mongod.exe --port 27013 --dbpath=E:\mongodbRs\db3 --replSet rs0
複本集搭建過程:
rs.status():查詢複本集的狀態:如下:
6>剛說複本集是沒有主節點的叢集,主節點宕機後其他節點會自動切換回來,下面我類比這種情境,把27011幹掉:
7>我再把27011節點起來,這時候他作為一個從節點的狀態又回到了叢集中:
至此,mongodb的主從複製和複本集的搭建已經全部完成,不會的搭建可以參考:http://www.runoob.com/mongodb/mongodb-replication.html
Mongodb的入門(6)複本集