1. 程式人生 > >Mongodb的入門(6)副本集

Mongodb的入門(6)副本集

服務 多個服務器 副本集搭建 故障恢復 客戶端請求 -s .com 兩種 所有

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)副本集