时间:2021-07-01 10:21:17 帮助过:29人阅读
第二步,建立mongos进程
建立mongos进程,以供应用程序连接。这种路由服务器连接数据目录都不需要,但一定要指明配置服务器的位置:
mongos --port 30000 --configdb 127.0.0.1:20000
分片管理通常是通过mongos完成的,完成后效果如下:
第三步,添加片
添加片,片就是普通的mongod:
连接刚才启动的mongos,为集群添加一个片。
启动shell,连接mongos:
确定连接的是mongos而不是mongod,通过addshard命令添加片:
>mongo 127.0.0.1:30000
mongos> use admin
switched to db admin
mongos> db.runCommand(
... {
... "addshard":"127.0.0.1:10000",
... "allowLocal":1
... }
... )
{ "shardAdded" : "shard0000", "ok" : 1 }
mongos> db.runCommand(
... {
... "addshard":"127.0.0.1:10001",
... "allowLocal":1
... }
... )
{ "shardAdded" : "shard0001", "ok" : 1 }
当在本机运行片的时候,得设定allowLocal键为true。MongoDB尽量避免由于错误的配置,将集群配置到本地,所以得让它知道这仅仅是开发,而且我们很清楚自己在做什么。
如果是生产环境中,则要将其部署在不同的机器上。
想添加片的时候,就运行addshard,MongoDB会负责将片集成到集群。
第四步,切分数据
MongoDB不会将存储的每一条数据都直接发布,得先在数据库和集合的级别将分片功能打开。
如果是连接配置服务器,
E:\mongo\bin>mongo 127.0.0.1:20000
MongoDB shell version: 2.0.6
connecting to: 127.0.0.1:20000/test
> use admin
switched to db admin
> db.runCommand({"enablesharding":"test"})
{
"errmsg" : "no such cmd: enablesharding",
"bad cmd" : {
"enablesharding" : "test"
},
"ok" : 0
}
应该是连接路由服务器,
db.runCommand({"enablesharding":"test"})//将test数据库启用分片功能.
对数据库分片后,其内部的集合便会存储到不同的片上,同时也是对这些集合分片的前置条件。
在数据库级别启用了分片以后,就可以使用shardcollection命令堆积和进行分片:
db.runCommand({"shardcollection":"test.refactor","key":{"name":1}})//对test数据库的lf集合进行分片,片键是name
如果现在对lf集合添加数据,就会依据”name”的值自动分散到各个片上。
这样分片就建立完成啦!
分片建立完成后,如何管理分片呢?
分片信息主要存放在config数据库上,这样就能被任何连接到mongos的进程访问到了。
在shell中连接了mongos,并使用了use config数据库。
查看分片
通过db.shards.find()方法:
查看状态
db.printShardingStatus()
删除分片
db.runCommand({"removeshard":"127.0.0.1:10001"})
版权声明:本文为博主原创文章,未经博主允许不得转载。
MongoDB之分片
标签:mongodb 数据库