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方案.为了满足海量数据的存储要求,需要搭建一个分布式 ...
随机推荐
- 微信小程序中的app文件介绍
[app] 一.app.json 1.对当前小程序的全局配置 2.页面路径.界面表现.网络超时时间.底部 tab 等 { "pages":[ "pages/index/i ...
- redux和react-redux的使用详解
我自己的理解redux就跟vue中的vuex差不多,都是数据管理器,话不多说,我们从经典的计数器案例开始讲解 使用redux实现计数器 创建如下的react项目,我习惯把每一个模块分块,才有这么多文件 ...
- linux 学习第七天
一.bash 使用(for循环.while循环) 1.1.批量添加用户 1.2.查看用户是否存在 A.cut -d : -f 1 /etc/passwd B.id dream (id 用户名称) C ...
- linux ping命令实践
ping 解析 Linux系统的ping命令是常用的网络命令,它通常用来检测与目标主机的连通性,经常说"ping以下机器,看是否开着,不能打开网页时候,可以ping ...
- memcache和redis的区别和联系
一.区别 Memcache : 1,对每个key的数据最大是1M. 2,对各种技术支持比较全面,session可以存储memcache中,各种框架(例如thinkphp)对memcache支持比较好. ...
- 发送邮箱验证码、session校验
本篇主要描述“发送邮箱验证码.session校验”相关前(html\js)后(java)台代码,业务逻辑示例,闲话少诉,直接上代码. 1.引入的jar包是mail-1.4.jar 2.java底层发送 ...
- IDEA中使用单元测试@Test等,提示没有 Junit.jar包
1.File-->Project Structure-->Modules-->右侧Dependencies-->+号-->JARs or directories... 2 ...
- python 基于Anaconda import numpy 报错 Importing the multiarray numpy extension module failed.
在windows中安装了 Anaconda 运行时报错 原因是系统环境变量起初并没有引入 E:\Tools\Anaconda\Library\bin 解决办法: 在系统环境变量中加入 E:\To ...
- 如何防止index.html首页被篡改
近期发现公司网站首页文件经常被篡改为indax.php或indax.html,导致网站的功能无法正常使用,百度搜索关键词,在显示结果中点击公司网站,打开后跳转到别的网站上去了,尤其我们在百度做的推广, ...
- Linux 中的权限
ABCD A-0, 十进制 B-user(u, 用户) C-group(g, 组用户) D-others(o, 其他用户) +-----+---+--------------------------+ ...