MongoDB集群分片

2021-07-16 05:36:24 字數 2273 閱讀 2252

什麼是sharding?說白了就是把海量資料水平擴充套件的集群系統,資料分表儲存在sharding的各個節點上。

mongodb的資料分開分為chunk,每個chunk都是collection中的一段連續的資料記錄,一般為200mb,超出則生成新的資料塊。

構建sharding需要三種角色,

shard伺服器(shard server):shard伺服器是儲存實際資料的分片,每個shard可以是乙個mongod例項,也可以是一組mongod例項構成的replica sets,為了實現每個shard內部的故障自動切換,mongodb官方建議每個shard為一組replica sets。

配置伺服器(config server):為了將乙個特定的collection儲存在多個shard中,需要為該collection指定乙個shard key,決定該條記錄屬於那個chunk,配置伺服器可以儲存以下資訊:

1,所有shard節點的配置資訊

2,每個chunk的shard key範圍

3,chunk在各shard的分布情況

4,集群中所有db和collection的shard配置資訊

路由程序(route process):乙個前端路由,客戶端由此接入,首先詢問配置伺服器需要到那個shard上查詢或儲存記錄,然後連線相應shard執行操作,最後將結果返回客戶端。客戶端只需 將原本發給mongod的查詢活更新請求原封不動的發給路由器程序,而不必關心所操作的記錄儲存在那個shard上。

構建sharding

由上面分析可得出,構建乙個sharding至少需要4個mongodb程序,兩個shard server(做分片),乙個config server,乙個route process,然後安排如下

程序                埠     檔案目錄

shard server1    2000    mongodb5

shard server2    2001    mongodb6

config server     30000    mongodb7

route process     40000    mongodb8

現在開始配置:

1,啟動shard server

這裡啟動只多了乙個命令:shardsvr,用這個命令就表示這個程序是shard程序。

2,啟動config server

啟動config server用的是configsvr命令

3,啟動route process

這裡設定chunk大小為1m,方便測試分片效果

4,配置sharding

所有程序都啟動好以後,剩餘的就是把他們串成串兒了

新開個cmd,然後連線到路由器程序中,使用addshard新增到路由器中

通過上面兩次操作,整個架構已經串成了一串,但是,別著急,架構還不知道分片的資料庫和片鍵呢

指定分片的資料庫是friends,然後指定按照表frienduserattach中的_id分片。

至此整個系統配置完畢。

驗證分片情況,我是用程式插入的資料,因為表是我實際所用的表,在cmd裡插入就太麻煩了,這裡我用客戶端驅動插入10000條資料

用use命令切換到friends資料庫,然後stats檢視當前狀態

字段說明:sharded為true,說明此表是經過分片處理的

shards部分有兩個shard server分別是:"shard0000" 和 "shard0001"。"shard0000"的字段count為1016,表明此shard server上分布的資料量是1016條,size表示此shard server上分布的資料庫大小,單位為b。

mongodb分片 集群

目前在乙個機器上部署,ip 10.1.2.197,埠列表如下 埠埠埠路由服務 27061 路由服務 27062 路由服務 27063 配置服務 27071 配置服務 27072 配置服務 27073 副本集1 27011 副本集2 27021 副本集3 27031 副本集1 27012 副本集2 2...

MongoDB 分片集群

在mongodb裡面存在另一種集群,就是分片技術,可以滿足mongodb資料量大量增長的需求。當mongodb儲存海量的資料時,一台機器可能不足以儲存資料,也可能不足以提供可接受的讀寫吞吐量。這時,我們就可以通過在多台機器上分割資料,使得資料庫系統能儲存和處理更多的資料。下圖展示了在mongodb中...

mongodb 分片集群

背景 mongodb集群搭建方式有三種,1 主從 官方已經不推薦 2 副本集,3 分片。這裡介紹如何通過分片sharding方式搭建mongodb集群。sharding集群方式也基於副本集,在搭建過程中,需要對分片和配置節點做副本集。最後將做好的副本集的分片加入到路由節點,構成集群。sharding...