实现步骤
- 确定业务类型标签:明确不同业务类型所对应的标签,例如订单数据标签为“order”,用户数据标签为“user”等。
- 选择分片键:根据业务特点选择合适的分片键,该分片键要与业务类型标签紧密相关。例如,如果以业务类型标签作为分片依据,可直接将标签字段作为分片键;若业务数据有时间属性,也可结合业务类型标签和时间字段组成复合分片键。
- 启用分片集群:在MongoDB配置服务器、分片服务器和路由服务器上进行相关设置,启动MongoDB分片集群。
- 创建数据库和集合:在路由服务器上通过mongo shell创建需要使用的数据库和集合。
- 标记集合进行分片:使用
sh.shardCollection()
方法标记要进行分片的集合,并指定分片键。例如,假设集合为myCollection
,分片键为businessType
(业务类型标签字段),命令为sh.shardCollection("myDb.myCollection", {businessType: 1})
。
- 添加标签和范围规则:
- 使用
sh.addShardTag()
为每个分片添加标签,例如sh.addShardTag("shard0000", "order")
表示给shard0000
分片添加“order”标签。
- 使用
sh.addTagRange()
指定不同业务类型标签对应的数据范围与分片标签的映射关系。例如,对于业务类型标签为“order”的数据,命令为sh.addTagRange("myDb.myCollection", {businessType: "order"}, {businessType: "order"}, "order")
,这样带有“order”业务类型标签的数据就会被分发到标记为“order”的分片上。
关键配置项
- 分片服务器配置:
shardsvr
选项用于标识该节点为分片服务器,需配置数据存储路径等相关参数。例如:
storage:
dbPath: /var/lib/mongodb-shard1
- 配置服务器配置:
configsvr
选项标识该节点为配置服务器,同样要配置数据存储路径。例如:
storage:
dbPath: /var/lib/mongodb-config1
- 路由服务器配置:路由服务器即
mongos
进程,通过--configdb
选项指定配置服务器的地址。例如:
mongos --configdb configReplSet/192.168.1.100:27019,192.168.1.101:27019,192.168.1.102:27019
- 分片键相关配置:在
shardCollection
命令中指定的分片键,它决定了数据如何在分片中分布。
- 标签相关配置:
addShardTag
和addTagRange
命令中的标签设置,决定了业务类型标签与分片的对应关系。