MongoDB sharding cluster Step by Step
本篇讲述MongoDB的 Sharding Cluster 的详细步骤,按着做理论上不会有什么错误。
关于说着里边的参数、变量、和设置,没有用到很多,只用到了关键的一些,其他的可以参考MongoDB的官方文档。
后者自己google,baidu,这里不想多讲。同样废话不多说,直接上菜。
哦,对了Sharding Cluster里边一定要弄明白的三个概念, DataNode, ConfigServer, Router。如图:
好了, 配置正式开始:
1, 配置Shard Data Node, 即我们刚才说的 Replica Set
1)自己编写 mongo_sharding_dataNode_1.conf
文件的内容:
bind_ip=localhost
port=27022
dbpath=D:\MongoDB\data\dbnode1
logpath=D:\MongoDB\log\node1.log
logappend=true
replSet=testsh1
shardsvr=true
2)同样的文件,改掉bind_ip,port,dbpath,logpath的值,做成mongo_sharding_dataNode_2.conf
这样存数据的两个库就有个一个primary,一个secondary。
3)在Replica Set中还要有一个arbitrary,所以接着编写第三个文件:mongo_sharding_dataNode_arbit.conf
内容同上,只是bind_ip,port,dbpath,logpath不一样而已。
上边的配置项,和参数有不清楚的,或者想加入更多参数的,最好使用 mongod -h 去查看一下, 里边解释的很清楚。
4)三个文件编号之后使用 mongod.exe -f mongo_sharding_dataNode_2.conf 启动三个mongod
例如,我的是:
D:\MongoDB\Server\3.2\bin>
D:\MongoDB\Server\3.2\bin>mongod.exe -f ..\conf\mongo_sharding_dataNode_1.conf
5)三个Server(三个mongod)都启起来之后,把这个三个server配置成一个 Replica Set 即让他们成为我们的一个shard data node.
随便登录进这个三个server中的一个, 比如我登录的是27022,
mongo.exe localhost:27022
use admin
cfg = {_id:'testsh1',members:[{_id:0,host:'localhost:27022',priority:2},{_id:1,host:'localhost:27023',priority:1},{_id:2,host:'localhost:27024',arbiterOnly:true}]}
rs.initiate(cfg)
通过以上命令,把这三个server配置成一个Replica Set, 即一个Shard Data Node,
现在我们就已经有个了一个 Shard Data Node 了。
如果中间出了错误, 不要害怕,先可以找找有没有补救的办法,比如rs.remove("localhist:27023") rs.reconfig(cfg)等等,这样可以学习的耕读。
最不怕的就是毁掉重来嘛, 不过这么弄自己练习可以, 公司环境或生产环境,要千万千万万万万万小心的!!
2,配置ConfigServer
1)自己编写 conf 文件 mongo_configserver_1.conf 内容:
bind_ip=localhost
port=27019
dbpath=D:\MongoDB\data\confserver1
logpath=D:\MongoDB\log\confserver1.log
logappend=true
configsvr=true
注意这里的 configsvr=true.
同样的方式编写另外两个或多个 conf 文件。
2)启动 Config Server
mongod.exe -f mongo_configserver_1.conf
例如,我的启动方式:
D:\MongoDB\Server\3.2\bin>
D:\MongoDB\Server\3.2\bin>mongod.exe -f ..\conf\mongo_configserver_2.conf
现在 Config Server 有了, Shard DataNode 有了,该有的准备都有了。
我们最终的要角色: mongos Router 该上场了。
3,配置Mongos
同样,我们编写mongos的配置文件mongos.conf
bind_ip=localhost
port=27030
#dbpath=D:\MongoDB\data\db ####### 注意一下,它不需要dbpath, 可以查看 mongos -h 查看mongos的参数列表
logpath=D:\MongoDB\log\mongos.log
logappend=true
configdb=localhost:27019,localhost:27020,localhost:27021 ####看一下这个三个ip:port用逗号分隔,这是三个 ConfigServer的地址。
好了全部的静态,需要写到文件里的配置都配置完了, 启动 mongos
mongos.exe -f mongos.conf
例如,我的启动是:
D:\MongoDB\Server\3.2\bin>
D:\MongoDB\Server\3.2\bin>mongos.exe -f ..\conf\mongos.conf
如果启动mongos没错的话,你应该能进入mongos
使用命令:mongo.exe localhost:27030 进入mongos,
进入mongos 后的提示应该是: mongos> 这样子的, 如图:
4,配置 Sharding
1)加入shard
使用命令:mongos> sh.addShard("testsh1/localhost:27022")
还记得前边那个testsh1吧, testsh1表示Replica Set的名字,当把主节点添加到shard以后,会自动找到set里的主,备,决策节点。
所以上边的命令就是:把testsh1这个Replica Set中的主节点加入到Shard中,让shard自己找备节点和决策节点。
可以使用命令:mongos> db.runCommand({listshards:1}); 来看一下添加的shards, 运行结果应该类似:
mongos>
mongos> db.runCommand({listshards:1});
{
"shards" : [
{
"_id" : "testsh1",
"host" : "testsh1/localhost:27022,localhost:27024"
}
],
"ok" : 1
}
mongos>
mongos>
2)激活数据库分片,使用命令:
mongos>
mongos>
mongos> db.runCommand({enablesharding:"test-db"});
{ "ok" : 1 }
mongos>
激活 test-db 的数据库分片。
通过执行以上命令,可以让数据库跨shard,如果不执行这步,数据库只会存放在一个shard。
一旦激活数据库分片,数据库中不同的collection将被存放在不同的shard上,但一个collection仍旧存放在同一个shard上,要使单个collection也分片,还需单独对collection作些操作。
3)激活collection分片,如图说的清楚,明白:
使用命令:mongos> db.runCommand({shardcollection:'test-db.usertest',key:{_id:1}});
表示激活test-db这个数据库的中 usertest 表的分片,使用 key是有索引的_id 这个列。
设置完了,可以切换到 test-db下,看看usertest表的状态。
使用命令:
use test-db;
db.usertest.stats()
由于内容太多,不在这里列出了。
文章到这里所有的配置已经结果, 这个Mongo Shard Cluster 已经配置完成了,
可以使用 mongos 来进行, 操作了。 比如添加,删除,查看等等。
mongos> user test-db;
mongos> db.usertest.save({name:'xiaobing'});
mongos> db.usertest.find();
等等一系列的操作。
ok, let's call it a day.
没完没了了,你还。
哈哈, 我很想知道如果那个mongos挂了怎么办?嗯,下图给了一个解决方案, 为了防止单点故障,一个mongos挂了怎么办?
看图, 不多说了:
知道怎么弄了吧, 这样应该没有单点故障了吧,完美,perfect。嘿嘿,嘿嘿
MongoDB sharding cluster Step by Step的更多相关文章
- 【MangoDB分片】配置mongodb分片群集(sharding cluster)
配置mongodb分片群集(sharding cluster) Sharding cluster介绍 这是一种可以水平扩展的模式,在数据量很大时特给力,实际大规模应用一般会采用这种架构去构建monod ...
- enode框架step by step之消息队列的设计思路
enode框架step by step之消息队列的设计思路 enode框架系列step by step文章系列索引: enode框架step by step之开篇 enode框架step by ste ...
- enode框架step by step之Staged event-driven architecture思想的运用
enode框架step by step之Staged event-driven architecture思想的运用 enode框架系列step by step文章系列索引: 分享一个基于DDD以及事件 ...
- enode框架step by step之框架要实现的目标的分析思路剖析1
enode框架step by step之框架要实现的目标的分析思路剖析1 enode框架系列step by step文章系列索引: 分享一个基于DDD以及事件驱动架构(EDA)的应用开发框架enode ...
- Tomcat Clustering - A Step By Step Guide --转载
Tomcat Clustering - A Step By Step Guide Apache Tomcat is a great performer on its own, but if you'r ...
- e2e 自动化集成测试 架构 实例 WebStorm Node.js Mocha WebDriverIO Selenium Step by step (三) SqlServer数据库的访问
上一篇文章“e2e 自动化集成测试 架构 京东 商品搜索 实例 WebStorm Node.js Mocha WebDriverIO Selenium Step by step 二 图片验证码的识别” ...
- enode框架step by step之框架的物理部署思路
enode框架step by step之框架的物理部署思路 enode框架系列step by step文章系列索引: enode框架step by step之开篇 enode框架step by s ...
- Step by Step Recipe for Securing Kafka with Kerberos
Short Description: Step by Step Recipe for Securing Kafka with Kerberos. Article I found it is a lit ...
- MongoDB Sharding分片配置
Ps:mongod是mongodb实例,mongos被默认为为mongodb sharding的路由实例. 本文使用的mongodb版本为3.2.9,因此参考网址为:https://docs.mong ...
随机推荐
- 人工智能起步-反向回馈神经网路算法(BP算法)
人工智能分为强人工,弱人工. 弱人工智能就包括我们常用的语音识别,图像识别等,或者为了某一个固定目标实现的人工算法,如:下围棋,游戏的AI,聊天机器人,阿尔法狗等. 强人工智能目前只是一个幻想,就是自 ...
- ServiceStack.OrmLite 调用存储过程
最近在做关于ServiceStack.OrmLite调用存储过程时,有问题.发现ServiceStack.OrmLite不能调用存储过程,或者说不能实现我想要的需求.在做分页查询时,我需要传入参数传出 ...
- ASP.NET MVC +EasyUI 权限设计(二)环境搭建
请注明转载地址:http://www.cnblogs.com/arhat 今天突然发现博客园出问题了,老魏使用了PC,手机,平板都访问博客园了,都是不能正常的访问,原因是不能加载CSS,也就是不能访问 ...
- Problem 1014 xxx游戏 暴力+拓扑排序
题目链接: 题目 Problem 1014 xxx游戏 Time Limit: 1000 mSec Memory Limit : 32768 KB 问题描述 小M最近很喜欢玩XXX游戏.这个游戏很简单 ...
- EXTJS学习笔记
由于公司统一决策,决定使用EXTJS作为前台的开发UI框架,所以从今天开始学习EXTJS,对学习过程中遇到的问题做记录. 首先第一个问题:为什么要用ExtJS作为公司开发基础架构? 推荐一篇文章: ...
- C++代码反汇编后的堆栈寄存器EBP和ESP
最近在分析一个进程崩溃的严重问题,其中有些过程分析需要对ebp, esp 有清晰的理解,对于ebp 和esp 相信大家都很熟悉了,但是为了使本文自成体系,我还是解释一下. ebp--栈底指针 esp- ...
- 【log4net】配置文件
相关资料: http://www.cnblogs.com/dragon/archive/2005/03/24/124254.html 注意: //如果为了使得应用程序的配置文件(web/app.con ...
- zju 2972 Hurdles of 110m(简单的dp)
题目 简单的dp,但是我还是参考了网上的思路,具体我没考虑到的地方见代码 #include<stdio.h> #include<iostream> #include<st ...
- 【转】前端图片该保存为什么格式?png or jpg?
疑虑: 图片存储为web格式,该用什么格式保存呢?png?jpg?压缩比例该为多大?css spript的优劣?有时候我们可能会因为一张格式不正确的图片而导致设计品质的下降以及页面性能的降低.了解图片 ...
- Nodejs常见安装
1.Windows 下成功安装node-canvas2.jsdom——node.js的DOM