mongo学习笔记(五):分片
2015-12-11 11:46
183 查看
分片
人脸: 代表客户端,客户端肯定说,你数据库分片不分片跟我没关系,我叫你干啥就干啥,没什么好商量的。
mongos: 首先我们要了解”片键“的概念,也就是说拆分集合的依据是什么?按照什么键值进行拆分集合....
好了,mongos就是一个路由服务器,它会根据管理员设置的“片键”将数据分摊到自己管理的mongod集群,数据
和片的对应关系以及相应的配置信息保存在"config服务器"上。
mongod: 一个普通的数据库实例,如果不分片的话,我们会直接连上mongod。
一、mongo复制黏贴7份
date文件夹为空文件夹
在每个bin文件夹里加一个bat
依次启动
config1.bat
config2.bat
config3.bat
mongos.bat
mongod1.bat
mongod2.bat
mongod3.bat
新开个cmd
f:
cd F:\mongo\mongodb_mongos\bin
mongo 127.0.0.1:2222/admin
db.runCommand({"addShard":"127.0.0.1:2004"})
db.runCommand({"addShard":"127.0.0.1:2005"})
db.runCommand({"addShard":"127.0.0.1:2006"})
db.runCommand({"enablesharding":"test"})
db.runCommand({"shardcollection":"test.person","key":{"name":1}})
插入数据
use test
for(var i=0;i<10000;i++){
db.person.insert({"name":"jack"+i,"age":i})
}
查看效果
疑问:
1.mongos 一直报这个:distributed lock 'balancer/****' unlocked
2.分片不均匀,1W数据分成4444,5555,1 到3个数据库
人脸: 代表客户端,客户端肯定说,你数据库分片不分片跟我没关系,我叫你干啥就干啥,没什么好商量的。
mongos: 首先我们要了解”片键“的概念,也就是说拆分集合的依据是什么?按照什么键值进行拆分集合....
好了,mongos就是一个路由服务器,它会根据管理员设置的“片键”将数据分摊到自己管理的mongod集群,数据
和片的对应关系以及相应的配置信息保存在"config服务器"上。
mongod: 一个普通的数据库实例,如果不分片的话,我们会直接连上mongod。
一、mongo复制黏贴7份
date文件夹为空文件夹
在每个bin文件夹里加一个bat
文件名 | 内容 |
config1.bat | mongod --dbpath=F:\mongo\mongodb_config1\data --port 2001 |
config2.bat | mongod --dbpath=F:\mongo\mongodb_config2\data --port 2002 |
config3.bat | mongod --dbpath=F:\mongo\mongodb_config3\data --port 2003 |
mongos.bat | mongos --port 2222 --configdb 127.0.0.1:2001,127.0.0.1:2002,127.0.0.1:2003 |
mongod1.bat | mongod --dbpath=F:\mongo\mongodb_data1\data --port 2004 |
mongod2.bat | mongod --dbpath=F:\mongo\mongodb_data2\data --port 2005 |
mongod3.bat | mongod --dbpath=F:\mongo\mongodb_data3\data --port 2006 |
依次启动
config1.bat
config2.bat
config3.bat
mongos.bat
mongod1.bat
mongod2.bat
mongod3.bat
新开个cmd
f:
cd F:\mongo\mongodb_mongos\bin
mongo 127.0.0.1:2222/admin
db.runCommand({"addShard":"127.0.0.1:2004"})
db.runCommand({"addShard":"127.0.0.1:2005"})
db.runCommand({"addShard":"127.0.0.1:2006"})
db.runCommand({"enablesharding":"test"})
db.runCommand({"shardcollection":"test.person","key":{"name":1}})
插入数据
use test
for(var i=0;i<10000;i++){
db.person.insert({"name":"jack"+i,"age":i})
}
查看效果
疑问:
1.mongos 一直报这个:distributed lock 'balancer/****' unlocked
2.分片不均匀,1W数据分成4444,5555,1 到3个数据库
3.分片后竟然不能用group了。。。。 解决 db.runCommand({mapreduce:"person", map:function Map(){ emit(this.name,{count:1}); },reduce:function Reduce(key,values){ total=0; for(var i in values){ total +=values[i].count } return {"count":total}; },finalize:function Finalize(key,reduced){ return reduced; },out:{inline:1} });
相关文章推荐
- 当你在浏览器中输入Google.com并且按下回车之后发生了什么?
- event对象获取方法总结在google浏览器下测试
- 【Google 年度顶级论文】机器学习系统,隐藏多少技术债?
- mangodb索引问题
- Django中URL的解析和反查
- setvisibility(view.gone)失效问题
- 在云平台上基于Go语言+Google图表API提供二维码生成应用
- panic in gccgo
- django的ManyToManyField
- Django doc summary (8)
- Django doc summary (7)
- Django doc summary (6)
- Django doc summary (5)
- Django doc summary (4)
- Ubuntu15.04 安装卡在logo界面不动
- Django doc summary (3)
- Django doc summary (2)
- Django doc summary (1)
- MFC-SetWindowPos-位图按钮-扩展对话框-更改Logo
- 将语音搜索集成到Google Now中