mongodb系列之--分片的原理與配置

1.分片的原理概述mongodb

  分片就是把數據分紅塊,再把塊存儲到不一樣的服務器上,mongodb的分片是自動分片的,當用戶發送讀寫數據請求的時候,先通過mongos這個路由層,mongos路由層去配置服務器請求分片的信息,再來判斷這個請求應該去那一臺服務器上讀寫數據。數據庫

 

2.分片的條件緩存

  1):服務器磁盤不夠的時候服務器

  2):服務器出現寫瓶頸的時候架構

  3):想將大量數據放在內存中提升性能性能

 

3.分片中的角色,有三種:spa

  1):配置服務器:存放分片信息,分片的數據與片的關係3d

  2):mongos路由:是一個路由進程,把全部對mongodb的數據讀寫請求根據配置服務器的配置信息分配到不一樣的分片服務器上去。自己不存儲數據與配置信息,但會緩存配置信息,日誌

  3)::指一個分片,這個分片能夠是一臺服務器,也能夠是多臺服務器組成的一個集羣。對應的多臺服務器中只能有一臺主服務器blog

 

4.分片是以什麼來分的

1)以數據庫來分,那就是把數據庫裏的多個集合分到不一樣的分片上,同一個集合的數據只能在同一分片上

2)以某個集合中的某個鍵來分,這個鍵稱爲片鍵,根據設置的片鍵把一個集合的數據分到不一樣的片上,這個分片鍵能夠是多個鍵的組合鍵

 

5.實際的生產環境

在一個實際的生產環境中會同時存在多個配置服務器,多個mongos路由進程,多個分片,每個分片會是一個副本集。

由於配置服務器與mongos路由進程佔用的資源很是少,因此有些人會經過不一樣的端口,把他們配置到同一臺服務器上,可是不要把多個配置服務器與多個mongos路由進程配置在同一臺服務器,最好是一臺服務器一個配置服務器,一個路由進程就夠,若是是多個在同一臺服務器,當這個服務器掛掉了,那你的整個分片的架構可能就跟着掛了,不能提供服務了,下面給出一個參考的架構圖。

6.搭建分片服務器架構的流程

1):建立配置服務器的數據與日誌目錄,並配置和啓動配置服務器,主要參數:mongod --configsvr ..............

2):建立mongos的日誌目錄,由於mongos自己不存儲數據,因此不用數據目錄。接着配置和啓動mongos路由進程,啓動的時候是以mongos,來啓動的。主要參數:mongos --configdb 配置服務器的ip:端口 ............

3) :  建立分片副本集的數據與日誌目錄,配置和啓動副本集,主要參數:mongod --shardsvr --replSet 副本集名 .........

4):對分片副本集進行初始化,設置仲裁節點,把初始化信息寫在config變量中,接着用rs.initiate(config)進行初始化

5):登陸mongos,把副本集增長到切片中,必須在admin數據中運行命令:db.runCommand({"addshard":"副本集名稱/ip:port,ip:port......","name":"分片名"})

6):打開數據庫和集合的分片功能db.runCommand({"enableSharding":"數據庫"}),db.runCommand({"shardcollection":"數據庫.集合名","key":{"鍵名":1}})

相關文章
相關標籤/搜索