mongodb 学习笔记 09 -- shard分片
2016-03-01 10:06
603 查看
概述
shard 分片 就是 把不同的数据分在不同的server模型
当中:
用户对mongodb的操作都是向mongs请求的
configsvr 用于保存,某条数据保存在哪个shard的上
怎样使用分片
先启动2个节点作为shardmongd --dbpath ~/db/mongo1/databse --logpath ~/db/mongo1/log/mongo.log --port 27017 --fork --smallfiles mongd --dbpath ~/db/mongo2/databse --logpath ~/db/mongo2/log/mongo.log --port 27018 --fork --smallfiles
启动 configsvr。就是比前面的多加了 –configsvr
mongd --dbpath ~/db/mongo3/databse --logpath ~/db/mongo3/log/mongo.log --port 27019 --fork --smallfiles --configsvr
启动mongos,注意–configdb 指定configsvr
mongos --logpath ~/db/mongo4/log/mongs.log --port 27020 --configdb 127.0.0.1:27020 --fork
连到mongos
mongo --port 27020
把前面执行的2个节点,加入进来
sh.addShard("127.0.0.1:27017") sh.addShard("127.0.0.1:27018")
查看状态
sh.status()
定义分片规则:比方 先声明test库能够分片,然后定义根据my表的my_id来分片
sh.enableSharding('test') sh.shardCollection('test.my',{'my_id':1})
分片原理
n篇文档,形成一个“chunk”,先放到某个shard上,当这片shard的上的chunk数。比其他shard上的chunk数差别大时,就移动chunk到还有一个shard上。
改动chunk的大小:比方改动到4m
默认某个chunk的大小是64m
use config db.setting.save({_id:'chunksize',value:4m})
手动预先分片
前面的分片方法中,根据chunk数来分片,这样会带来影响IO的问题。能够手动预制分片。比如定义my_id 0~1000 放在shard1中,1001~2000 放在shard2中,2001~3000 中放在shard3中
sh.enableSharding('test') sh.shardCollection('test.my',{'my_id':1})sh.splitAt('my',{my_id:1000})
sh.splitAt('my',{my_id:2000})
sh.splitAt('my',{my_id:3000})
相关文章推荐
- mongodb的cpp版本驱动编译总结
- mongodb 错误代码 exception in initAndListen: 12596 old lock file, terminating
- 安装使用Mongoose配合Node.js操作MongoDB的基础教程
- 详解Wondows下Node.js使用MongoDB的环境配置
- Node.js的MongoDB驱动Mongoose基本使用教程
- mongodb安装的时候出错,win32,解决方法。
- MongoDB数组修改器更新数据
- mongoDB 3.0 安全权限访问控制
- 给mongodb3.X加上认证
- Ubuntu 安装 MongoDb
- MongoDB 常用管理
- 安装 MongoDB。
- Mongodb-mongod参数说明
- Node.js 手册查询-2-MongoDB数据库方法
- Erlang 连接mongoDB
- [置顶] MongoDB 安装过程中发生问题
- mongodb分片环境开启认证
- 使用 MongoDB 须知
- mongodb远程连接
- Java 操作MongoDb 增删改查