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方案.为了满足海量数据的存储要求,需要搭建一个分布式 ...
随机推荐
- Handshake Lemma
- finite undirected gragh ∑deg(v) = 2|E| In a k-ary tree where every node has either 0 or k children ...
- 阿里云Docker镜像仓库(Docker Registry)
镜像仓库申请地址: https://cr.console.aliyun.com/cn-shanghai/instances/repositories 一.创建命名空间 例如daniel-hub ...
- 『Python题库 - 简答题』 Python中的基本概念 (121道)
## 『Python题库 - 简答题』 Python中的基本概念 1. Python和Java.PHP.C.C#.C++等其他语言的对比? 2. 简述解释型和编译型编程语言? 3. 代码中要修改不可变 ...
- Python学习5——基本格式化输出
整数的格式化输出 十进制.八进制.十六进制 num01 = 100 print("十进制输出:%d"%num01) print("八进制输出:%o"%num01 ...
- Android Studio 引入 Git 并提交代码
File -> Settings -> Version Control -> Git -> Path to Git executable -> 选择本地 Git 可执行文 ...
- [Jmeter并发报错解决方案]org.apache.http.NoHttpResponseException: 10.0.4.147:8000 failed to respond
背景:公司模型框架是Nginx+uwsgi+Django+nginx,一开始使用Jmeter进行高并发请求测试,发现成功率只有50%,换用postman,成功率100%,代码进行高并发一样不会报错. ...
- 【转载】COM编程入门不得不看的文章 :第一部分 什么是COM,如何使用COM
原文:COM编程入门不得不看的文章 :第一部分 什么是COM,如何使用COM 原文:http://www.codeproject.com/Articles/633/Introduction-to-CO ...
- 1070: [SCOI2007]修车
1070: [SCOI2007]修车 https://www.lydsy.com/JudgeOnline/problem.php?id=1070 分析: 每个第几次修车等的时间都不一样,当前第i个人修 ...
- Aop实现拦截方法参数
对于spring框架来说,最重要的两大特性就是AOP 和IOC. 以前一直都知道有这两个东西,在平时做的项目中也常常会涉及到这两块,像spring的事务管理什么的,在看了些源码后,才知道原来事务管理也 ...
- SpringBoot入门(五)——自定义配置
本文来自网易云社区 大部分比萨店也提供某种形式的自动配置.你可以点荤比萨.素比萨.香辣意大利比萨,或者是自动配置比萨中的极品--至尊比萨.在下单时,你并没有指定具体的辅料,你所点的比萨种类决定了所用的 ...