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方案.为了满足海量数据的存储要求,需要搭建一个分布式 ...
随机推荐
- npm常见配置收集
npm代理设置为走ss通道:npm config set proxy 'http://localhost:1080'
- Linux进程地址空间 && 进程内存布局[转]
一 进程空间分布概述 对于一个进程,其空间分布如下图所示: 程序段(Text):程序代码在内存中的映射,存放函数体的二进制代码. 初始化过的数据(Data):在程序运行初已经对变量进行初始 ...
- 高级同步器:可重用的同步屏障Phaser
引自:https://shift-alt-ctrl.iteye.com/blog/2302923 在JAVA 1.7引入了一个新的并发API:Phaser,一个可重用的同步barrier.在此前,JA ...
- javascript最常用的对象创建方式
//第一种 function Demo(){ var obj=new Object(); obj.name="Yubaba"; obj.age=12; obj.firstF=fun ...
- bootstrap-01-学习记录
1.bootstrap所有插件依赖JQ,必须在JQ之后引入. 2.bootstrap分预编译版(css,js,fonts)和源码版(less,js,fonts,dist->预编译版内容,docs ...
- css 浮动说明
clear:both; 1.要了解的:什么是浮动.浮在某面板之上. 例如:float:left; 向左停靠, 就是让需要设置浮动的元素,跟在指定元素后面. 先上实例: 比较常用导航: .nav_ul ...
- python 基于Anaconda import numpy 报错 Importing the multiarray numpy extension module failed.
在windows中安装了 Anaconda 运行时报错 原因是系统环境变量起初并没有引入 E:\Tools\Anaconda\Library\bin 解决办法: 在系统环境变量中加入 E:\To ...
- MySQL高级第三章——查询截取分析
一.查询分析 1.永远小表驱动大表 使用小的数据集驱动大的数据集. //复习 EXISTS 的知识:SELECT ... FROM tb WHERE EXISTS (subquery) 是因为前后数据 ...
- 成都Uber优步司机奖励政策(1月25日)
滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...
- [数据结构]_[C/C++]_[链表的最佳创建方式]
场景 1.链表在C/C++里使用非常频繁, 因为它非常使用, 可作为天然的可变数组. push到末尾时对前面的链表项不影响. 反观C数组和std::vector, 一个是静态大小, 一个是增加多了会对 ...