设备:
  三个1G、20G、1核的虚拟机,系统是SentOS7 min
设置目录:
Server1:
mkdir -p /home/mongoshard/data/shard11 /home/mongoshard/data/shard21 /home/mongoshard/data/config
Server2:
mkdir -p /home/mongoshard/data/shard12 /home/mongoshard/data/shard22 /home/mongoshard/data/config
Server3:
mkdir -p /home/mongoshard/data/shard13 /home/mongoshard/data/shard23 /home/mongoshard/data/config
 
1、配置副本集和分片
Server1:
/usr/local/mongoshard/bin/mongod --shardsvr --replSet shard1 --port 27017 --dbpath /home/mongoshard/data/shard11  --logpath /home/mongoshard/data/shard11.log --logappend --fork --nojournal  --oplogSize 10
Server2:
/usr/local/mongoshard/bin/mongod --shardsvr --replSet shard1 --port 27017 --dbpath /home/mongoshard/data/shard12  --logpath /home/mongoshard/data/shard12.log --logappend --fork --nojournal  --oplogSize 10
Server3:
/usr/local/mongoshard/bin/mongod --shardsvr --replSet shard1 --port 27017 --dbpath /home/mongoshard/data/shard13  --logpath /home/mongoshard/data/shard13.log --logappend --fork --nojournal  --oplogSize 10
 
config = { _id:"shard1", members:[
                     {_id:0,host:"192.168.229.129:27017 "},
                     {_id:1,host:"192.168.229.130:27017 "},
                     {_id:2,host:"192.168.229.131:27017 "}
                ]
         }
rs.initiate(config);
 
Server1:
/usr/local/mongoshard/bin/mongod --shardsvr --replSet shard2 --port 27018 --dbpath /home/mongoshard/data/shard21  --logpath /home/mongoshard/data/shard21.log --logappend --fork --nojournal  --oplogSize 10
Server2:
/usr/local/mongoshard/bin/mongod --shardsvr --replSet shard2 --port 27018 --dbpath /home/mongoshard/data/shard22  --logpath /home/mongoshard/data/shard22.log --logappend --fork --nojournal  --oplogSize 10
Server3:
/usr/local/mongoshard/bin/mongod --shardsvr --replSet shard2 --port 27018 --dbpath /home/mongoshard/data/shard23  --logpath /home/mongoshard/data/shard23.log --logappend --fork --nojournal  --oplogSize 10
 
config = { _id:"shard2", members:[
                     {_id:0,host:"192.168.229.129:27018 "},
                     {_id:1,host:"192.168.229.130:27018"},
                     {_id:2,host:"192.168.229.131:27018 "}
                ]
         }
 
rs.initiate(config);
2、启动配置服务器
Server1:
/usr/local/mongoshard/bin/mongod --configsvr --replSet shard3 --dbpath /home/mongoshard/data/config --port 20000 --logpath /home/mongoshard/data/config.log --logappend --fork
 
Server2:
/usr/local/mongoshard/bin/mongod --configsvr --replSet shard3 --dbpath /home/mongoshard/data/config --port 20000 --logpath /home/mongoshard/data/config.log --logappend --fork
 
Server3:
/usr/local/mongoshard/bin/mongod --configsvr --replSet shard3 --dbpath /home/mongoshard/data/config --port 20000 --logpath /home/mongoshard/data/config.log --logappend --fork
config = { _id:"shard3", members:[
                     {_id:0,host:"192.168.229.129:20000 "},
                     {_id:1,host:"192.168.229.130:20000"},
                     {_id:2,host:"192.168.229.131:20000 "}
                ]
         }
rs.initiate(config);
 
3、启动mongos
/usr/local/mongodb/bin/mongos  --configdb --port 30000  192.168.229.129:20000,192.168.229.130:20000,192.168.229.131:20000 --logpath /home/mongoshard/data/mongos.log --logappend --fork 
 
在任意节点链接mongos
/usr/local/mongoshard/bin/mongo 127.0.0.1:30000/admin
 
4. 加入shards
如里shard是单台服务器,用>db.runCommand( { addshard : “<serverhostname>[:<port>]” } )这样的命令加入,如果shard是replica sets,用replicaSetName/<serverhostname>[:port][,serverhostname2[:port],…]这样的格式表示,例如本例执行:
>db.runCommand( { addshard : "shard1/192.168.229.129:27017,192.168.229.130:27017,192.168.229.131:27017",name:"s1",maxsize:20480} );
>db.runCommand( { addshard : "shard2/192.168.229.129:27018,192.168.229.130:27018,192.168.229.131:27018",name:"s2",maxsize:20480} );
注意:在添加第二个shard时,出现error:test database 已经存在的错误,这里用mongo命令连接到第二个replica set,用db.dropDatabase()命令把test数据库给删除然后就可加入
5. Listing shards
>db.runCommand( { listshards : 1 } )
如果列出了以上二个你加的shards,表示shards已经配置成功
6. 激活数据库分片
命令:
> db.runCommand( { enablesharding : "testdb "} );
通过执行以上命令,可以让数据库跨shard,如果不执行这步,数据库只会存放在一个shard,一旦激活数据库分片,数据库中不同的collection将被存放在不同的shard上,但一个collection仍旧存放在同一个shard上,要使单个collection也分片,还需单独对collection作些操作
我们设置testdb的 table1 表需要分片,根据 id 自动分片到 shard1 ,shard2,shard3 上面去。要这样设置是因为不是所有mongodb 的数据库和表 都需要分片!
use testdb
for (var i = 1; i <= 100000; i++)db.table1.save({id:i,"test1":"testval1"});
for(var i=0;i<100000;i++)db.table1.save({"name" : "kk", "value" : "0", "myid" : i});
#查看分片情况如下,部分无关信息省掉了
db.table1.stats();
 
查看mongodb数据分布情况:
db.printShardingStatus(); 或者sh.status()

MongoDB副本集模式安装的更多相关文章

  1. mongodb生产环境(副本集模式)集群搭建配置

    mongodb副本集模式由如下几部分组成: 1.路由实例mongos 2.配置实例configsvr 3.副本集集群replset(一主多从) tips: 1.以上实例都是mongod守护进程 2.以 ...

  2. mongodb副本集的docker化安装

    1. 定义 一般只要生产环境就需要考虑冗余设计,保证在某一台服务器由于某种原因宕机后服务还可以正常运行. mongo副本集是一组服务器,其中有一个主服务器(primary),用于处理客户端请求:还有多 ...

  3. linux上安装MongoDB副本集(带keyfile安全认证以及用户权限)

    搭建前准备 MongoDB版本:4.0 主要参考搭建MongoDB副本集网站:https://www.jianshu.com/p/f021f1f3c60b 安装之前最好先确定一下几点: 防火墙关闭 M ...

  4. MongoDB 副本集的原理、搭建、应用

    概念: 在了解了这篇文章之后,可以进行该篇文章的说明和测试.MongoDB 副本集(Replica Set)是有自动故障恢复功能的主从集群,有一个Primary节点和一个或多个Secondary节点组 ...

  5. 创建mongodb副本集操作实例

    一:概念 相关概念及图片引用自这里 mongodb副本集: 副本集是一组服务器,其中一个是主服务器,用于处理客户请求:还有多个备份服务器,用于保存主服务器的数据副本.如果主服务器崩溃了,备份服务器自动 ...

  6. nodejs+mongoose操作mongodb副本集实例

    继上一篇设置mongodb副本集之后,开始使用nodejs访问mongodb副本集: 1:创建项目     express 项目名称 2:npm install mongoose    安装mongo ...

  7. mongodb副本集原理及部署记录

    工作原理 1.副本集之间的复制是通过oplog日志现实的.备份节点通过查询这个集合就可以知道需要进行复制的操作 2.oplog是节点中local库中的一个固定的集合,在默认情况下oplog初始化大小为 ...

  8. MongoDB副本集及C#程序的连接配置

    1.副本集 高可用是绝大多数数据库管理系统的核心目标之一.如果要想生产数据在发生故障后依然可用,就需要确保为生产数据库多部署一台服务器.MongoDB副本集提供了数据的保护.高可用和灾难恢复的机制. ...

  9. MongoDB副本集(一主两从)读写分离、故障转移功能环境部署记录

    Mongodb是一种非关系数据库(NoSQL),非关系型数据库的产生就是为了解决大数据量.高扩展性.高性能.灵活数据模型.高可用性.MongoDB官方已经不建议使用主从模式了,替代方案是采用副本集的模 ...

随机推荐

  1. 【grunt】grunt 基础学习

    1. 干啥的呢? 项目打包管理,用处有 1)可用于压缩合并前端文件,包括css/js , 2)可用于管理发布文件与开发文件,3)可用于自动编译less 文件 2. 常用的东西有哪些呢? 常用的插件有 ...

  2. css实现接地气的checkbox框

    1.前言 我做的项目中,很少默认用原生的样式,甚至连下拉框都很少用select框,不过,原生也有原生的好处,来得快,没有什么大问题.如果是自己用html+css去拼接的话,样式会好看一点.不过应人而异 ...

  3. ReactiveCocoa有关集合类的使用

    Sequences 集合  表示一个不可变的序列值且不能包含空值, 1.实现NSArray的快速遍历 NSArray *numbers = @[@1, @2, @3, @4, @5, @6]; //通 ...

  4. year:2017 month:7 day:27

    2017-07-27 JAVA 1:java分为三类:javase(桌面开发应用) javaee(企业级开发应用) javame(手机嵌入式开发应用) 2:jdk(java开发工具包),jre(jav ...

  5. Python数据可视化Matplotlib——Figure画布背景设置

    之前在今日头条中更新了几期的Matplotlib教学短视频,在圈内受到了广泛好评,现应大家要求,将视频中的代码贴出来,方便大家学习. 为了使实例图像显得不单调,我们先将绘图代码贴上来,此处代码对Fig ...

  6. Bear and Three Balls

    链接:http://codeforces.com/problemset/problem/653/A                                                   ...

  7. <经验杂谈>C#生成条形码

    虽然二维码满天飞,但也不能忘了条形码,本篇介绍可以在C#中使用的1D/2D编码解码器.条形码的应用已经非常普遍,几乎所有超市里面的商品上面都印有条形码: 条形码的标准: 条形码的标准有ENA条形码.U ...

  8. jQuery.Gantt

    使用jQuery.Gantt过程中,遇到的问题!

  9. 解读java同步类CountDownLatch

    同步辅助类: CountDownLatch是一个同步辅助类,在jdk5中引入,它允许一个或多个线程等待其他线程操作完成之后才执行. 实现原理 : CountDownLatch是通过计数器的方式来实现, ...

  10. MFC加载PNG图片并实现双缓冲

    因为PNG包含Alpha通道,所以不同于BITMAP,在MFC中使用CImage类对其进行处理,通常使用load和draw成员函数. 所以标题的论述可以进一步解释为,使用CImage实现双缓冲. 通常 ...