转自:http://blog.csdn.net/zhangzhaokun/article/details/6269514

前言

最近在研习MongoDB集群,找到一个不错的例子,加了几句,按照自己的理解画了一个图,做个笔记。

该实验是在一台Windows机器下搭建了一个 Replica Sets + Sharding 测试集群环境,以此作为后续对于Mongodb更进一步调研的实验平台。

正文

只有一台windows机器,配置方案:

1、3个分片sharding
2、每一个分片由3个节点构成1主2备的Replica Sets
3、3个配置节点Configsever
4、1个路由节点Mongos 分片复制集A(三个分片节点构成一个复制集):
127.0.0.1: 127.0.0.1: 127.0.0.1: 分片复制集B(三个分片节点构成一个复制集):
127.0.0.1: 127.0.0.1: 127.0.0.1: 分片复制集C(三个分片节点构成一个复制集):
127.0.0.1: 127.0.0.1: 127.0.0.1: Configsvc(三个配置服务器节点):
127.0.0.1: 127.0.0.1: 127.0.0.1: mongos(一个路由节点):
127.0.0.1:


详细操作步骤:

(1)下载mongodb-window 安装文件,将bin文件整个放置在D:/MongoDB目录下

(2)创建数据和日志文件目录

进入D:/MongoDB目录下创建如下目录:

 创建数据文件目录:
data/a/r0
data/a/r1
data/a/r2 data/b/r0
data/b/r1
data/b/r2 data/c/r0
data/c/r1
data/c/r2 data/configsvr/r0
data/configsvr/r1
data/configsvr/r2 创建日志文件目录:
logs/a
logs/b
logs/c
logs/configsvr

(3)创建分片和复制集

第一组:

mongod --logpath D:/MongoDB/logs/a/r0.log --logappend --dbpath D:/MongoDB/data/a/r0 --port  --shardsvr --replSet setA --rest  --oplogSize
mongod --logpath D:/MongoDB/logs/a/r1.log --logappend --dbpath D:/MongoDB/data/a/r1 --port --shardsvr --replSet setA --rest --oplogSize
mongod --logpath D:/MongoDB/logs/a/r2.log --logappend --dbpath D:/MongoDB/data/a/r2 --port --shardsvr --replSet setA --rest --oplogSize

启动上述分片节点之后,再使用mongo的命令行来初始化复制集:

D:/MongoDB/bin>call mongo 127.0.0.1:/admin
MongoDB shell version: 1.8.
connecting to: 127.0.0.1:/admin
> config={ _id:'setA',
members:[{_id: ,host:'127.0.0.1:10000'},
{_id:,host:'127.0.0.1:10001'},
{_id:,host:'127.0.0.1:10002'}]
}
{
"_id" : "setA",
"members" : [
{
"_id" : ,
"host" : "127.0.0.1:10000"
},{
"_id" : ,
"host" : "127.0.0.1:10001"
},{
"_id" : ,
"host" : "127.0.0.1:10002"
}] }
setA> rs.initiate(config);

第二组:

mongod --logpath D:/MongoDB/logs/b/r0.log --logappend --dbpath D:/MongoDB/data/b/r0 --port  --shardsvr --replSet setB --rest  --oplogSize
mongod --logpath D:/MongoDB/logs/b/r1.log --logappend --dbpath D:/MongoDB/data/b/r1 --port --shardsvr --replSet setB --rest --oplogSize
mongod --logpath D:/MongoDB/logs/b/r2.log --logappend --dbpath D:/MongoDB/data/b/r2 --port --shardsvr --replSet setB --rest --oplogSize

启动上述分片节点之后,再使用mongo的命令行来初始化复制集

D:/MongoDB/bin>call mongo 127.0.0.1:/admin
MongoDB shell version: 1.8.
connecting to: 127.0.0.1:/admin
> config={
_id: 'setB',
members:[
{_id:,host:'127.0.0.1:20000'},
{_id:,host:'127.0.0.1:20001'},
{_id:,host:'127.0.0.1:20002'}
]}
{
"_id" : "setB",
"members" : [
{
"_id" : ,
"host" : "127.0.0.1:20000"
},{
"_id" : ,
"host" : "127.0.0.1:20001"
},{
"_id" : ,
"host" : "127.0.0.1:20002"
}]
}
> rs.initiate(config);

第三组:

从命令行进入D:/MongoDB/bin目录,分别执行如下命令:

mongod --logpath D:/MongoDB/logs/c/r0.log --logappend --dbpath D:/MongoDB/data/c/r0 --port  --shardsvr --replSet setC --rest  --oplogSize
mongod --logpath D:/MongoDB/logs/c/r1.log --logappend --dbpath D:/MongoDB/data/c/r1 --port --shardsvr --replSet setC --rest --oplogSize
mongod --logpath D:/MongoDB/logs/c/r2.log --logappend --dbpath D:/MongoDB/data/c/r2 --port --shardsvr --replSet setC --rest --oplogSize

启动上述分片节点之后,再使用mongo的命令行来初始化复制集

D:/MongoDB/bin>call mongo 127.0.0.1:/admin
MongoDB shell version: 1.8.
connecting to: 127.0.0.1:/admin
> config={
_id: 'setC',
members:[
{_id: ,host:'127.0.0.1:30000'},
{_id:,host:'127.0.0.1:30001'},
{_id:,host:'127.0.0.1:30002'}
]}
{
"_id" : "setC",
"members" : [
{
"_id" : ,
"host" : "127.0.0.1:30000"
},{
"_id" : ,
"host" : "127.0.0.1:30001"
},{
"_id" : ,
"host" : "127.0.0.1:30002"
}
]
}
> rs.initiate(config);

(4)启动三个配置服务节点Configsvr:(从命令行分别执行如下命令,配置三个Configsvr)

cd D:/MongoDB/bin
call mongod --configsvr --logpath D:/MongoDB/logs/configsvr/r0.log --logappend --dbpath D:/MongoDB/data/configsvr/r0 --port --shardsvr cd D:/MongoDB/bin
call mongod --configsvr --logpath D:/MongoDB/logs/configsvr/r1.log --logappend --dbpath D:/MongoDB/data/configsvr/r1 --port --shardsvr cd D:/MongoDB/bin
call mongod --configsvr --logpath D:/MongoDB/logs/configsvr/r2.log --logappend --dbpath D:/MongoDB/data/configsvr/r2 --port --shardsvr

(5)启动一个路由节点mongos

cd D:/MongoDB/bin
call mongos --configdb 127.0.0.1:,127.0.0.1:,127.0.0.1: --logpath D:/MongoDB/logs/mongos.log --logappend --port

(6)配置分片

>cd D:/MongoDB/bin
D:/MongoDB/bin>call mongo 127.0.0.1:
MongoDB shell version: 1.8.
connecting to: 127.0.0.1:/test
>use admin
switched to db admin
> db.runCommand({addshard:"setA/127.0.0.1:10000,127.0.0.1:10001,127.0.0.1:10002",name:"ShardSetA"})
{ "shardAdded" : "ShardSetA", "ok" : }
> db.runCommand({addshard:"setB/127.0.0.1:20000,127.0.0.1:20001,127.0.0.1:20002",name:"ShardSetB"})
{ "shardAdded" : "ShardSetB", "ok" : }
> db.runCommand({addshard:"setC/127.0.0.1:30000,127.0.0.1:30001,127.0.0.1:30002",name:"ShardSetC"})
{ "shardAdded" : "ShardSetC", "ok" : }
>printShardingStatus() --- Sharding Status ---
sharding version: { "_id" : , "version" : }
shards:
{
"_id" : "ShardSetA",
"host" : "setA/127.0.0.1:10000,127.0.0.1:10001,127.0.0.1:10002"
}
{
"_id" : "ShardSetB",
"host" : "setB/127.0.0.1:20000,127.0.0.1:20001,127.0.0.1:20002"
}
{
"_id" : "ShardSetC",
"host" : "setC/127.0.0.1:30000,127.0.0.1:30001,127.0.0.1:30002"
}
databases:
{ "_id" : "admin", "partitioned" : false, "primary" : "config" }

配置到这里,集群搭建完毕!

在完成了集群的搭建工作之后,需要做的就是建立一个数据库,建立表,设置分片主键来初始化数据了:

查看分片:

db.runCommand( { listshards :  } )

数据库分片:

db.runCommand( { enablesharding : "test"} )

Collecton分片:

db.runCommand( { shardcollection : "test.person", key : {name : } } )

添加数据测试:

for (var i = ; i <= ; i++){
db.person.insert({"name":"jack"+i, "age":i});
}
db.printShardingStatus() (查看mongodb的数据分片情况)

读者:

撒花,恭喜你兄弟,如果没出意外的话,你已经完成了一个sample,吃枣吃枣哈........

Mongodb集群配置(sharding with replica set)的更多相关文章

  1. 实例:Mongodb集群配置过程

    最近因为一些项目公司开始采用Mongodb做为大量的数据存储,通过网络上大量的资源自己已经掌握一套可行的Mongodb集群配置过程,Mongodb具有无规则存储.大数据存储.多平台支持.强大的扩展插件 ...

  2. MongoDB集群配置笔记一

    MongoDB 的部署方案有单机部署.复本集(主备)部署.分片部署.复本集与分片混合部署.混合的部署方式如图: 分片集群的构造 (1)mongos :数据路由,和客户端打交道的模块.mongos本身没 ...

  3. mongodb集群配置及备份恢复

    Mongodb安装: 编辑/etc/yum.repos.d/mongodb.repo,添加以下: [MongoDB] name=MongoDB Repository baseurl=https://r ...

  4. mongodb集群——配置服务器放分片meta信息,说明meta里包含了哪些数据信息

    在搭建分片之前,先了解下分片中各个角色的作用. ① 配置服务器.是一个独立的mongod进程,保存集群和分片的元数据,即各分片包含了哪些数据的信息.最先开始建立,启用日志功能.像启动普通的mongod ...

  5. mongodb集群配置分片集群

    测试环境 操作系统:CentOS 7.2 最小化安装 主服务器IP地址:192.168.197.21 mongo01 从服务器IP地址:192.168.197.22 mongo02 从服务器IP地址: ...

  6. MongoDB集群配置笔记二(实战)

    单台mongodb配置文件: dbpath=/opt/mongodb/data logpath=/opt/mongodb/logs/mongodb.log logappend=true fork=tr ...

  7. mongodb集群配置副本集

    测试环境 操作系统:CentOS 7.2 最小化安装 主服务器IP地址:192.168.197.21 mongo01 从服务器IP地址:192.168.197.22 mongo02 从服务器IP地址: ...

  8. MongoDB集群配置

    本文演示:(一个主服务器,一个备份服务器,三个仲裁服务器) 官方推荐副本集的成员数量为奇数,最多12个副本集节点,最多7个节点参与选举. 本文演示基于本机,用端口区分服务(每个服务器下新建db文件夹用 ...

  9. mongodb集群配置主从模式

    测试环境 操作系统:CentOS 7.2 最小化安装 主服务器IP地址:192.168.197.21 master-node 从服务器IP地址:192.168.197.22 slave-node 关闭 ...

随机推荐

  1. WinForm 根据屏幕分辨率自适应

    方法来自百度, 不算太好,但目前能满足需求.(窗口在LOAD的时候记录每个控件的坐标,每次窗口重绘的时候引时SizeChange事件,根据比率重新设置坐标) 以下是代码  AutoSizeFormCl ...

  2. 组建你自己的Theme,组件你的Style

    Andorid-Style,组建你自己的Theme,组件你的Style 前言: 今天,尝试了一个新的Demo,也尝试深入学习,话不多说,看一下,这个Demo如何实现的自定义主题与组件Style是如何绑 ...

  3. mysql 的 GROUP_CONCAT

    GROUP_CONCAT 通常跟 group by 一起用,但也可以不用.例:select GROUP_CONCAT(pct_id) as pct_ids from (select max(pct_i ...

  4. mysql系统表加trigger和对特定的库禁用 DDL 语句

    给 mysql 系统表加上 trigger 1 Reply 默认情况下,mysql 是不能给系统表,例如 mysql.user 加上触发器的.会提示 ERROR 1465 (HY000): Trigg ...

  5. HDu 1001 Sum Problem 分类: ACM 2015-06-19 23:38 12人阅读 评论(0) 收藏

    Sum Problem Time Limit: 1000/500 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total ...

  6. 程序设计第三次作业--C++计算器初始部分

    面向对象程序设计作业3--C++计算器初始部分 Github 链接:https://github.com/luojingzhao/object-oriented/tree/master/calcula ...

  7. lght oj 1257 - Farthest Nodes in a Tree (II) (树dp)

    题目链接:http://www.lightoj.com/volume_showproblem.php?problem=1257 跟hdu2196一样,两次dfs //#pragma comment(l ...

  8. ZOJ 3596Digit Number(BFS+DP)

    一道比较不错的BFS+DP题目 题意很简单,就是问一个刚好包含m(m<=10)个不同数字的n的最小倍数. 很明显如果直接枚举每一位是什么这样的话显然复杂度是没有上限的,所以需要找到一个状态表示方 ...

  9. CodeForces Gym 100685C Cinderella (水题)

    题意:给定 n 个杯子,里面有不同体积的水,然后问你要把所有的杯子的水的体积都一样,至少要倒少多少个杯子. 析:既然最后都一样,那么先求平均数然后再数一下,哪个杯子的开始的体积就大于平均数,这是一定要 ...

  10. HDU 5437 Alisha’s Party (优先队列模拟)

    题意:邀请k个朋友,每个朋友带有礼物价值不一,m次开门,每次开门让一定人数p(如果门外人数少于p,全都进去)进来,当最后所有人都到了还会再开一次门,让还没进来的人进来,每次都是礼物价值高的人先进.最后 ...