mongodb之数据分片

mongodb之数据分片

mongodb可以通过分片的方式扩展集群的性能,下面给出分片的具体操作方式。

添加一个分片

sh.addShard(“shardingName/127.0.0.1:27017”)

添加一个名为shardingName的分片,shardingName在搭建该副本集的时候已经指定,只需要指定一个副本集中的ip地址即可,集群会获取到新加进来的副本集的其他ip地址。当mongod服务的端口是27017时,端口可以不指定,默认27017。

分片

1.开启分片

sh.enableSharding(“dbName”)

对 dbName 数据库开启分片功能。

2.分片是针对于集合而言的,执行以下命令对集合进行分片。

sh.shardCollection(“dbName.collectionName”,{shardKey:1})

对 dbName 库的 collectionName 集合开启分片。片键为 shardKey 。shardKey可以是复合索引。shardKey请慎重选择,该字段无法重新选择,无法更新。
执行命令后,balancer会将原有数据切割为chunk,均匀分发到所有的分片上。

手动分片

有时候我们想要将某些集合分发到自己指定的目标分片上,这时候我们就要进行手动分片。

1.首先对目标分片打上标记。

sh.addShardTag(“shard1”,“targetShard”)
sh.addShardTag(“shard2”,“targetShard”)

2.进行分片

sh.addTagRange(“dbName.collectionName”,{shardKey:MinKey},{shardKey :MaxKey},“targetShard”)

该命令会将 dbName 库的 collectionName 集合的chunk均匀迁移到打了 targetShard 标记的分片上。{shardKey:MinKey},{shardKey :MaxKey}可以手动指定范围,容易造成chunk分布不均匀,谨慎选择。另外如果片键是复合索引,请不要使用shardKey代替具体字段名,会造成迁移chunk时报错。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值