分片集群
分片概念
- mongodb使用分片來支持具有非常大的數據集合高存儲量湊在哦的部署
- 分片是將數據拆分,分散到不同機器的過程,也能叫做分區
- mongodb支持通過分片進行水平擴展
組件說明
- 分片(存儲):每個分片包含分片數據的自己,每個分片都可以部署副本集
- mongos(路由):mongos充當查詢路由器,在客戶端引用程序和分片集群之間提供接口
- config servers(調度的配置):配置服務器存儲集群的元數據和配置設置
配置shard
- 創建三個數據節點,不同的是裡面的配置文件port和sharding,
- 不知道的參考安裝 linux安裝
# 配置文件加這個
sharding:
#分片角色
clusterRole: shardvr
配置副本集
- 配置副本集的時候,注意config service不需要仲裁節點
- 不知道的參考副本搭建副本搭建
- 將三個分片都搭上副本就行
配置路由節點
- 創建存放日誌的目錄
#日志存储目录
mkdir -p /mongodb/sharded_cluster/mymongos_27017/log
- 修改配置文件
vi /mongodb/sharded_cluster/mymongos_27017/mongos.conf
- 寫入配置(在其他的配置文件的基礎上,修改port,並加上以下)
sharding: # 指定配置節點副本集 configDB: 副本1ip:副本1端口,副本2ip:副本2端口,副本3ip:副本3端口
- 啟動mongos
/usr/local/mongodb/bin/mongod -f /mongodb/sharded_cluster/mymongos_27017/mongod.conf
- 使用命令添加分片
sh.addShard("ip":"port")
- 如果添加失敗,先移除分片,檢查分片信息的正確後,在次添加分片
#移除分片
use admin
db.runCommand({removeShard:"replSetName"})
- 開啟分片功能
sh.enableSharding("庫名")
或
sh.shardCollection("庫名.集合名",{"key":1})
- 集合分片,必須使用sh.shardCollection()方法指定集合和分片鍵
- namespace:要分片的目標集合的命名空間
- key:用作分片鍵的索引規範文檔
- unique:為true的時候,片段字段上回閒置為確保是唯一索引,哈希策略不支持唯一索引,默認false
sh.shardcollenction(namespace,key.unique)
分片規則
- 哈希策略:計算一個字段的哈希值,並用這個哈希值來創建數據塊
sh.shardcollenction("db.collection",{"key":"hashed"})
- 範圍策略:基於範圍的分片,按照數值來分片
#用age分片 sh.shardcollenction("db.collection",{"age":1})
沒有分片的原因
- 系統繁忙,在分片中
- 數據塊沒有填滿,默認的數據塊尺寸是64M,填滿之後才會想其它片的數據塊填充數據
#改小,改成1
use config
db.setting.save(_id:"chunksize",value:1)
springboot配置
- 在配置文件裡面只需要配置路由節點即可
来源:CSDN
作者:假装自己不胖
链接:https://blog.csdn.net/weixin_42672777/article/details/104017191