MongoDB3.2 集群搭建
一、集群的理论知识
1.1 集群成员



1.2 数据的分片
1.3 分片的性能
1.4数据的平衡
1.4.1 分裂(splite)


1.4.2 平衡(balance)
1)自动化的,默认是开启的
2)每次只移动一个chunk,但可能在源上的chunk没有删除前就开始新的移动
3)只有在节点的chunk数量差距非常大的时候才触发。
触发的阀值:


4)一直迁移到任何两个节点上的chunk数量相差小于2为止。
5)如果设置了shard可以使用的磁盘最大小值 ,如果节点的磁盘使用超过了这个值,将不会balance到这个节点上。
6)平衡完毕后,会修改confige server的信息
1.5 config server
1.5.1 config serve配置成replicatsion sets的限制
1)没有仲裁节点
2)没有延迟节点
1.5.2 config server的读写
1.6 系统架构
1.6.1 用于生产的架构


1.6.2. 用于测试的架构


1.7 分片键shards key
1.7.1 hash 分片
1.7.2 分片键对性能的影响
1.8 集群的高可用
1.8.1 shards节点
1.8.2 config server
1.8.3 mongos
1.9 集群的查询
1.9.1 查询路径
1.9.2 mongos标识
{"ismaster" : true,"msg" : "isdbgrid","maxBsonObjectSize" : 16777216,"ok" : 1}二、集群的搭建
2.1集群搭建的步骤
2.1.1 配置confige server
1).创建replications setsmongod --configsvr --replSet configReplSet --port <port> --dbpath <path>或者使用配置文件sharding:clusterRole: configsvrreplication:replSetName: configReplSetnet:port: <port>storage:dbpath: <path>2).初始化。进入其中一个的mongo shell:rs.initiate( {_id: "configReplSet",configsvr: true,members: [{ _id: 0, host: "<host1>:<port1>" },{ _id: 1, host: "<host2>:<port2>" },{ _id: 2, host: "<host3>:<port3>" }]} )2.1.2 创建mongos实例(路由实例)
mongos --configdb configReplSet/<cfgsvr1:port1>,<cfgsvr2:port2>,<cfgsvr3:port3>2.1.3 加入 shards
2.1.4 设置分片
2.1.4.1 设置数据库分片
2.1.4.2 设置集合分片
2.1.5 配置镜像config server
2.2 实验
2.2.1实验环境
| node1 | 192.168.75.10 | config server1(configRS 37017) mongos1( 27017) shard1(47017) |
| node2 | 192.168.75.11 | config server2(configRS 37017) mongos2(27017) shard2(47017) |
| node3 | 192.168.75.12 | config server3(configRS 37017) shard3( 47017) |
2.2.2.配置config server
[root@node1 mongoConfig]# cat mongodb.config dbpath=/usr/local/mongoConfig/datalogpath=/usr/local/mongoConfig/log/mongo.logport=37017fork=true#master=truereplSet=configRSconfigsvr=true[root@node1 bin]# ./mongod -f /usr/local/mongoConfig/mongodb.conf about to fork child process, waiting until server is ready for connections.forked process: 3032child process started successfully, parent exiting[root@node1 bin]# ./mongo --port 37017> rs.initiate( {... _id: "configRS",... configsvr: true,... members: [... { _id: 0, host: "192.168.75.10:37017" },... { _id: 1, host: "192.168.75.11:37017" },... { _id: 2, host: "192.168.75.12:37017" }... ]... } );{ "ok" : 1 }2.2.3.配置mongos
./mongos --configdb configRS/192.168.75.10:37017,192.168.75.11:37017,192.168.75.12:37017 --port 27017 --fork --logpath=/usr/local/mongoRouter/log/mongo.log2.2.4.启动三个shard实例
[root@node1 mongoShard]# vi mongodb.config dbpath=/usr/local/mongoShard/datalogpath=/usr/local/mongoShard/log/mongo.logport=47017fork=true[root@node1 bin]# ./mongod -f /usr/local/mongoShard/mongodb.config about to fork child process, waiting until server is ready for connections.forked process: 17508child process started successfully, parent exiting2.2.5.将shards加入集群
./mongo --port 27017sh.addShard( "192.168.75.10:47017" )sh.addShard( "192.168.75.11:47017" )sh.addShard( "192.168.75.12:47017" )2.2.6.将数据库加入分片
sh.enableSharding("testShards")2.2.7.将集合加入分片
sh.shardCollection("testShards.test", { "_id": "hashed" });2.2.8.插入数据
mongos> use testShardsswitched to db testShardsmongos> show collections;testmongos> db.test.insert({"name":"testshrads","msg":"ok"});WriteResult({ "nInserted" : 1 })mongos> db.test.insert({"name":"testshrads2","msg":"ok"});WriteResult({ "nInserted" : 1 })mongos> db.test.insert({"name":"testshrads3","msg":"ok"});WriteResult({ "nInserted" : 1 })mongos> db.test.insert({"name":"testshrads4","msg":"ok"});WriteResult({ "nInserted" : 1 })mongos> db.test.insert({"name":"testshrads5","msg":"ok"});WriteResult({ "nInserted" : 1 })mongos> db.test.insert({"name":"testshrads6","msg":"ok"});WriteResult({ "nInserted" : 1 })mongos> db.test.insert({"name":"testshrads7","msg":"ok"});WriteResult({ "nInserted" : 1 })mongos> db.test.insert({"name":"testshrads8","msg":"ok"});WriteResult({ "nInserted" : 1 })mongos> db.test.insert({"name":"testshrads9","msg":"ok"});WriteResult({ "nInserted" : 1 }){ "_id" : ObjectId("56815a0617de6d7dfc1051b5"), "name" : "testshrads", "msg" : "ok" }
{ "_id" : ObjectId("56815a0e17de6d7dfc1051b6"), "name" : "testshrads2", "msg" : "ok" }
{ "_id" : ObjectId("56815a1717de6d7dfc1051b8"), "name" : "testshrads4", "msg" : "ok" }
{ "_id" : ObjectId("56815a1b17de6d7dfc1051b9"), "name" : "testshrads5", "msg" : "ok" }
{ "_id" : ObjectId("56815a1e17de6d7dfc1051ba"), "name" : "testshrads6", "msg" : "ok" }
{ "_id" : ObjectId("56815a2617de6d7dfc1051bc"), "name" : "testshrads8", "msg" : "ok" }
{ "_id" : ObjectId("56815a1217de6d7dfc1051b7"), "name" : "testshrads3", "msg" : "ok" }
{ "_id" : ObjectId("56815a2117de6d7dfc1051bb"), "name" : "testshrads7", "msg" : "ok" }
{ "_id" : ObjectId("56815a2917de6d7dfc1051bd"), "name" : "testshrads9", "msg" : "ok" }
2.2.9.测试数据
#./mongod --port 47017执行:> use testShardsswitched to db testShards> db.test.find();{ "_id" : ObjectId("56815a1217de6d7dfc1051b7"), "name" : "testshrads3", "msg" : "ok" }{ "_id" : ObjectId("56815a2117de6d7dfc1051bb"), "name" : "testshrads7", "msg" : "ok" }{ "_id" : ObjectId("56815a2917de6d7dfc1051bd"), "name" : "testshrads9", "msg" : "ok" }MongoDB3.2 集群搭建的更多相关文章
- mongodb3.6集群搭建:分片+副本集
mongodb是最常用的noSql数据库,在数据库排名中已经上升到了前五.这篇文章介绍如何搭建高可用的mongodb(分片+副本)集群. 在搭建集群之前,需要首先了解几个概念:路由,分片.副本集.配置 ...
- mongodb3.6集群搭建:分片集群认证
上篇集群已经创建,现在加入认证. 1. 生成密钥文件每个服务器上创建路径: mkdir -p /var/lib/mongo/auth 生成64字节的密钥文件openssl rand -base64 6 ...
- MongoDB-3.4集群搭建:分片
概念 集群拥有三个节点: 分片(sharding),分发路由(query routers)和配置服务器 (config server) Shard 分片是存储了一个集合部分数据的MongoDB实例,每 ...
- mongoDB3.4的sharding集群搭建及JavaAPI的简易使用
第一部分 在搭建mongoDB之前,我们要考虑几个小问题: 1.我们搭建集群的目的是什么?是多备份提高容错和系统可用性还是横向拓展存储大规模数据还是两者兼有? 如果是为了多备份那么选择replicat ...
- mongodb3集群搭建
三台服务器:先设置hosts 10.0.0.231 node1 10.0.0.232 node2 10.0.0.233 node3 1:下载 mongodb-linux-x86_64-rhel70-3 ...
- mongodb 3.4 集群搭建:分片+副本集
mongodb是最常用的nodql数据库,在数据库排名中已经上升到了前六.这篇文章介绍如何搭建高可用的mongodb(分片+副本)集群. 在搭建集群之前,需要首先了解几个概念:路由,分片.副本集.配置 ...
- mongodb 3.6 集群搭建:分片+副本集
mongodb是最常用的nosql数据库,在数据库排名中已经上升到了前六.这篇文章介绍如何搭建高可用的mongodb(分片+副本)集群. 在搭建集群之前,需要首先了解几个概念:路由,分片.副本集.配置 ...
- mongodb之 3.4.0 mongodb sharing 副本集群搭建
系统系统 centos6.5三台服务器:10.100.25.42/43/44安装包: mongodb-linux-x86_64-rhel62-3.4.0.tgz 服务器规划:mongos mongos ...
- MongoDB分布式集群搭建
最近在做一个关于车险的项目,由于数据量较大,实验室的Boss决定采用HBase+ES/MongoDB这两种方案,并做性能对比,本人负责MongoDB方案.为了满足海量数据的存储要求,需要搭建一个分布式 ...
随机推荐
- python类的使用(类定义,构造器,类属性,方法)
注:这里只描述使用方法,具体类的概念长篇大论就不要为难我这个懒人了. 总之一句话编程语言只是一个工具,会用就行,好用就行.打破砂锅问到底,我觉得有必要研究一下C,汇编,电子链路等. class clt ...
- 【POJ 3368】Frequent values(RMQ)
Description You are given a sequence of n integers a1 , a2 , ... , an in non-decreasing order. In ad ...
- 洛谷P4525 【模板】自适应辛普森法1(simpson积分)
题目描述 计算积分 结果保留至小数点后6位. 数据保证计算过程中分母不为0且积分能够收敛. 输入输出格式 输入格式: 一行,包含6个实数a,b,c,d,L,R 输出格式: 一行,积分值,保留至小数点后 ...
- (Oracle)自定义调用AWR
Oracle->自动发送AWR报告 2016年9月21日 09:31 需求描述: 每日或定期手动使用AWR报告来检查Oracle数据库状态不仅耗时也费力,需求使用脚本自动收集AWR报告. 分 ...
- 简单的mongo小工具 python
#!/bin/python #coding=utf-8 ### eg : mgotool.py -i 127.0.0.1 -p 10001 -a xxxxx -u root -rc #import s ...
- js函数和window对象
- 网站http配置https -- 阿里云 nginx
通过阿里云领取免费证书可将网站配置为https 步骤为下: 登陆阿里云点击sll证书,然后点击购买证书 选择免费的 然后立即购买 购买后会让你填写一些域名信息 然后提交签发证书 签发后点击下方下载 选 ...
- mysql的数据类型与表约束
数据类型 (详细数据类型请参考:http://www.runoob.com/mysql/mysql-data-types.html) 数字 整型 tinyint int bigint 小数: flo ...
- 【blockly教程】第三章Blockly顺序程序设计
3.1 什么是Blockly语言 2012年6月,Google发布了完全可视化的编程语言Google Blockly,整个界面清晰明了, 你可以如同在玩拼图一样用一块块图形对象构建出应用程序.每个图 ...
- angularjs transitions
http://angular-transitions.mgechev.com/#/view/page1 https://scotch.io/tutorials http://stackoverflow ...