MongoDB学习记录09-分片-单节点(mongodb3.2版本以前)
来源:互联网 发布:神通数据库 编辑:程序博客网 时间:2024/04/29 20:49
分片
在Mongodb里面存在另一种集群,就是分片技术,可以满足MongoDB数据量大量增长的需求。
当MongoDB存储海量的数据时,一台机器可能不足以存储数据,也可能不足以提供可接受的读写吞吐量。这时,我们就可以通过在多台机器上分割数据,使得数据库系统能存储和处理更多的数据。
配置分片单节点
准备工作 注意这里的版本不是3.4 mongodb安装过程不再重复
需要两个mongd实例 对应 分片 A 与 分片B ,端口 如图, data存放路径如图
需要一个配置服务器 同上 端口 data路径
路由同上
新建目录结构为
启动分片A
[root@localhost shards]# cd /usr/local/mongodb-linux-x86_64-amazon-2.8.0-rc5/bin/[root@localhost bin]# ./mongod --shardsvr --port 30001 --dbpath /usr/local/mongodb-linux-x86_64-amazon-2.8.0-rc5/shards/01/ --logpath /usr/local/mongodb-linux-x86_64-amazon-2.8.0-rc5/shards/01/l.log --fork --nojournal
执行成功,输出结果,进程ID2745
about to fork child process, waiting until server is ready for connections.forked process: 2745child process started successfully, parent exiting
启动分片B
先建立好文件夹
/usr/local/mongodb-linux-x86_64-amazon-2.8.0-rc5/shards/02
输入命令
[root@localhost bin]# ./mongod --shardsvr --port 30002 --dbpath /usr/local/mongodb-linux-x86_64-amazon-2.8.0-rc5/shards/02/ --logpath /usr/local/mongodb-linux-x86_64-amazon-2.8.0-rc5/shards/02/l.log --fork --nojournal
输出
about to fork child process, waiting until server is ready for connections.forked process: 2757child process started successfully, parent exiting
启动配置服务
创建好文件夹
/usr/local/mongodb-linux-x86_64-amazon-2.8.0-rc5/shards/conf
输入命令
[root@localhost bin]# ./mongod --port 30000 --configsvr --dbpath /usr/local/mongodb-linux-x86_64-amazon-2.8.0-rc5/shards/conf/ --logpath /usr/local/mongodb-linux-x86_64-amazon-2.8.0-rc5/shards/conf/l.log --fork --nojournal
输出结果
about to fork child process, waiting until server is ready for connections.forked process: 2782child process started successfully, parent exiting
启动路由
新建文件夹
/usr/local/mongodb-linux-x86_64-amazon-2.8.0-rc5/shards/route
输入命令
[root@localhost bin]# ./mongos --port 40000 --configdb 192.168.7.127:30000 --logpath /usr/local/mongodb-linux-x86_64-amazon-2.8.0-rc5/shards/route/l.log --fork
输出结果
这里注意输出中提示,分片中只有一个单节点建议用于测试,不建议用于生产环境,后面会配置副本集的形式.
2017-05-09T14:04:44.601+0800 W SHARDING running with 1 config server should be done only for testing purposes and is not recommended for productionabout to fork child process, waiting until server is ready for connections.forked process: 2795child process started successfully, parent exiting
配置分片集群
登录到路由(mongos)这个节点
[root@localhost bin]# ./mongo --port 40000
添加分片A
mongos> sh.addShard("192.168.7.127:30001");
输出
{ "shardAdded" : "shard0000", "ok" : 1 }
添加分片B
mongos> sh.addShard("192.168.7.127:30002");
输出
{ "shardAdded" : "shard0001", "ok" : 1 }
查看不同节点的数据库和表
路由节点
配置节点
分片A
分片B
可以看到 路由节点 和 配置节点 都存在 一个config数据库,这个数据库存放了分片的信息
查看分片
查看分片
mongos> db.getSiblingDB("config").shards.find();
输出
{ "_id" : "shard0000", "host" : "192.168.7.127:30001" }{ "_id" : "shard0001", "host" : "192.168.7.127:30002" }
查看分片对哪些数据库有效
mongos> db.getSiblingDB("config").databases.find()
输出
{ "_id" : "admin", "partitioned" : false, "primary" : "config" }{ "_id" : "test", "partitioned" : false, "primary" : "shard0000" }
开启一个数据库的分片
mongos> sh.enableSharding("cloud-docs");
输出
{ "ok" : 1 }
再来查看哪些数据库开启了分片
mongos> db.getSiblingDB("config").databases.find()
可以看到多出一个cloud-docs 数据库
{ "_id" : "admin", "partitioned" : false, "primary" : "config" }{ "_id" : "test", "partitioned" : false, "primary" : "shard0000" }{ "_id" : "cloud-docs", "partitioned" : true, "primary" : "shard0000" }
对数据库的book表 进行分片, 分片键 这里使用 year 和 id 的组合分片键
mongos> sh.shardCollection("cloud-docs.book",{"year":1,"_id":1});
输出
{ "collectionsharded" : "cloud-docs.book", "ok" : 1 }
分片写入测试写入一千条数据
链接路由节点
指定刚才设定启用分片的数据库cloud-docs,和指定的表book
@Test public void initDate(){ MongoDatabase db = new MongoClient( "192.168.7.127", 40000).getDatabase("cloud-docs"); MongoCollection<Document> coll = db.getCollection("book"); for(int i = 0 ; i < 1000 ; i ++){ Document doc = new Document(); User u = User.initUser(); doc.put("address", u.getAddress()); doc.put("year", u.getAge()); doc.put("email", u.getEmail()); doc.put("height", u.getHeight()); doc.put("job", u.getJob()); doc.put("nickname", u.getNickname()); doc.put("phone", u.getPhone()); doc.put("school", u.getSchool()); doc.put("sex", u.getSex()); doc.put("hoby", u.getHoby()); Document dog = new Document(); dog.put("name", u.getDog().getName()); dog.put("age", u.getDog().getAge()); doc.put("dog", dog); coll.insertOne(doc); } }
查看 分片A 和 分别B 两个数据库 book 加起来 值刚好等于 1000
0 0
- MongoDB学习记录09-分片-单节点(mongodb3.2版本以前)
- MongoDB学习记录10-分片-副本集(mongodb3.2版本以前)
- MongoDB学习记录11-分片-副本集(mongodb3.2版本以后)
- 学习MongoDB--(10-2):分片(建立分片)
- mongodb 学习笔记 09 -- shard分片
- mongodb多节点部署 分片部署 分片集群
- mongodb3 分片部署手记
- Mongodb3.4分片搭建
- mongodb3.4.1分片
- mongodb3.2版本用户管理
- MongoDB学习记录2
- Mongodb分片搭建(单实例)
- 《MongoDB权威指南》学习整理----MongoDB分片
- MongoDB学习十四 --MongoDB的分片
- MongoDB副本集分片集搭建记录
- MongoDB3.4 版本新节点同步的一点惊喜
- 【MongoDB】以前学习mongodb知识的补充
- redis学习记录08-分片
- 最大似然估计 高斯分布
- Easy Summation
- 利用Log4Net将日志插入至oracle数据库!
- 通过maven下载jar包
- Tomcat启动闪退失败的问题
- MongoDB学习记录09-分片-单节点(mongodb3.2版本以前)
- Intellij IDEA 弹窗License activation 报 this license BIG3CLIK6F has been cancelled 错误的解决(转)
- UNIX再学习 -- 进程关系
- Visual Studio Code 1.12 发布
- spring boot 架构问题 时间处理 (映射,时区问题)
- 在线压缩图片
- arcgisruntime 100.0.0 License Key
- S5PV210系列(裸机三)ARM体系结构与汇编指令
- 编写一个程序求解字谜游戏问题