MongoDB手动预分片(九)

MongoDB手动预分片(九)

一、书接上文

在上篇文章总介绍了搭建mongodb分片,但是由于chunk是在主分片上先存数据,然后将主分片上的chunk数量和其他分片上chunk数量的多少作比较,如果主分片上的chunk数量大于其他分片上的chunk数量,则将主分片上的chunk向其他分片移动。这样就会造成不同分片服务器之间的IO繁忙。在本篇中采用手动分片来解决这个问题。

上篇文章地址:https://blog.csdn.net/m0_38039437/article/details/80234567

二、说动手就动手

1、分片前先申明分片的数据库和表格。例如:对shop数据库的user表进行分片,分片依据user_id字段拆分。

 sh.shardCollection('shop.user',{user_id:1})

2、手动分片

①、分片语法:sh.splitAt(数据库.表格,{分割策略})

for(var i=1;i<=10;i++){sh.splitAt('shop.user',{user_id:i*1000})}

预先在shop数据库的user表上根据user_id字段数量分割,每隔1K条数据分一个chunk一共分10次,这样的界限切好chunk(虽然chunk是空的), 这些chunk将会均匀移动到各片上.

②、查看手动分片后chunk分配的状态。执行:sh.status()


③、插入数据,观察每个分片上存储的数据

for(var i=1;i<=50000;i++){db.user.insert({user_id:i,name:'hell user'+i})}

分别在每个几点的分片服务器上登录查看数据量,发现已经按照预先定义好的规则进行存放数据。

27017节点分片的数据


27018节点分片上的数据


猜你喜欢

转载自blog.csdn.net/m0_38039437/article/details/80238482
今日推荐