MongoDB windows基礎配置及集群搭建


由於公司業務的發展MSSQL已處於瓶頸。因為沒錢買牛逼服務器只能靠軟件來實現最大優化了。原來的系統架構如下圖:

 

現在准備把讀寫數據庫和只讀數據換成Nosql數據庫。最終選擇了Mongodb. 下面開始了Mongodb的學習。

1. Mongodb下載:https://www.mongodb.org/downloads?_ga=1.159678843.794950141.1434346788

2.具體安裝就不多說了。網上太多介紹的。沒必要浪費鍵盤了。

3.搭建復制集

  一個簡單的復制集最少包括三個節點。 1.primary 2. secondary,3.arbiter節點

 primary: 存儲數據。

 secondary:同步主節點數據

 arbiter: 當主節點故障時,arbiter會投票選擇一個secondary充當priary節點。

大致如下:

注意:三個節點其實就是三個Mongod實例。

(1). 創建主節點配置文件內容如下: 文件名:rs0.conf

      dbpath = D:\RuntimeServices\MongoDB_Ad\shard00\db        //指定數據存儲目錄
  logpath = D:\RuntimeServices\MongoDB_Ad\shard00\log\shard00.log    //指定數據庫日志目錄
  journal = true  //是否啟動日志功能
  port = 32000   //端口號
  nohttpinterface = true  //不開啟web監控界面
  replSet = rs0           //復制集名稱(同一個復制集名稱相同)

 (2). 創建從節點配置文件(rs1.conf),內容如下:

     dbpath = D:\RuntimeServices\MongoDB_Ad\shard01\db
  logpath = D:\RuntimeServices\MongoDB_Ad\shard01\log\shard01.log
  journal = true
  port = 32001
  nohttpinterface = true
  replSet = rs0

 

 (3).創建arbiter節點配置文件(rs2.conf) 內容如下:

      dbpath = D:\RuntimeServices\MongoDB_Ad\shard02\db
  logpath = D:\RuntimeServices\MongoDB_Ad\shard02\log\shard02.log
  journal = true
  port = 32002
  nohttpinterface = true
  replSet = rs0

  分別生成三個服務

   sc.exe create OpenXLive.MongoDB_Ad.Shard00 binPath= "\"D:\RuntimeServices\MongoDB_Ad\mongodb-3.0.4\bin\mongod.exe\" --service --config=\"D:\RuntimeServices\MongoDB_Ad\mongodb-3.0.4\rs0_0.conf\"" DisplayName= "rs0_Service" start= "auto"

  (4).鏈接到主節點執行命令

     rs.initiate();

     此時復制集只有一個成員。 rs.conf() 進行查看。

     按照MongoDB的默認設置。剛才的命令會初始化mongod實例為主節點。 下面把從節點和arbiter加入進去。

     rs0:PRIMARY>rs.add("localhost:32001");

     rs0:PRIMARY>rs.addArb("localhost:32002");

     rs0:PRIMARY>rs.status()   可查看復制集狀態。

 

 

至此一個復制集創建完成。 在大數據的時代一個復制集遠遠不夠。雖然解決了災難恢復。但是沒有完成數據分片。一台物理機上的空間是有限的。為了實現數據均衡分布在多台機器上。 下面開始了MongoDB的集群搭建。

在Mongodb中搭建一個集群環境非常簡單。幾分鍾就可以完成一個擁有故障轉移,數據同步,讀寫分離,數據分布式存儲的集群環境。

 

二、分片集群架構

分片集群主要有mongos路由進程、配置服務器、復制集組成的分片集合組成。 如下圖:

 

分片集群上一個分片(shard) 就是一個復制集。 當然也可以是一個單個Mongod實例。在集群中一般用復制集。保證一個分片不會故障。如果一個分片出現故障。整個集群就掛了。因為每一個分片上保留數據的一部分。

所有分片的綜合才是所有數據。所以我們應該保證每個分片上數據的完整性和穩定性至關重要。

Mongos和配置服務器是輕量級進程。是不會保存數據的。 配置服務器只保存分片的一些狀態信息。 所以整個讀取集群的過程為: 訪問Mongos-查詢配置服務器,根據配置服務器要求寫入或讀取那些分片服務器進行讀取數據。

 

搭建集群步驟:

1. 配置復制集rs0並啟動。參考上面介紹

2.配置復制集rs1並啟動。

3.配置cofingure服務器。

   配置服務器也是一個Mongod實例。

   (1).configure服務器1 的配置文件 cfgserver_0.conf 內容如下:

        dbpath="E:\Mongodb\config\data\db_config0"

        logpath = "E:\Mongodb\config\logs\db_config0.log"

        journal = true

        port = 30002

        configsvr=true

   啟動服務。

   (2).configure服務器2的配置文件參考上面。 啟動服務

   (3).configure服務器3的配置文件參考上面。 啟動服務

 

4.配置Mongos路由服務器

   配置文件cfg_mongos.conf 內容如下:

   logpath=""

   port = 30000

   configdb = localhost:30001,localhost:30002,localhost:30003

 

啟動服務器。

 

5. 添加各個分片到集群:

   打開客戶端連接到Mongos服務器。

   添加第一個分片的主從節點: mongos>sh.addShard("localhost:30004,localhost:30005")

   添加第二個分片的主從節點: mongos>sh.addShard("localhost:30007,localhost:30008")

 

6.最后通過sh.status()檢查是否正確(下圖我實際添加了三個分片)

 

 

支持分片集群搭建完成。

 

更多內容:

1.集群完成怎樣去訪問?

2.用戶權限怎么添加?

3.如何監控集群環境是否工作正常。

4.如何做到數據分布式存儲

5.片鍵如何選擇?

6.索引建立

7.curd基本操作。

8.讀寫分離如何控制。

9.c# php java js 等如何使用Mongod集群的?

針對上面問題。接下來會慢慢更新。

 

 

 

 

 

 

  

 

 

   

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM