设备:
  三个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. strtok函数 分类: c++ 2014-11-02 15:24 214人阅读 评论(0) 收藏

    strtok函数是cstring文件中的函数 strtok函数是cstring文件中的函数 其功能是截断字符串 原型为:char *strtok(char s[],const char *delin) ...

  2. HA分布式集群二hive配置

    一,概念 hive:是一种数据仓库,数据储存在:hdfs上,hsql是由替换简单的map-reduce,hive通过mysql来记录映射数据 二,安装 1,mysql安装: 1,检测是否有mariad ...

  3. 双向循环链表(C语言描述)(三)

    代码清单 // linkedlist.h #ifndef __LINKEDLIST_H__ #define __LINKEDLIST_H__ #include <assert.h> #in ...

  4. 到底什么样的企业才适合实施SAP系统?

    SAP系统作为全宇宙第一的ERP,号称世界500强里面有80%的企业部署了SAP系统,总部位于德国沃尔多夫市,在全球拥有6万多名员工,遍布全球130个国家,并拥有覆盖全球11,500家企业的合作伙伴网 ...

  5. python--DenyHttp项目(2)--ACM监考客户端1.0版

    修复了: 360搜索可以使用的漏洞 更新版本,上一版本复制的Hosts文件保留的漏洞 #coding:gbk import os import sys from subprocess import * ...

  6. python--DenyHttp项目(1)--socket编程:客户端与服务器端

    查找了许多资料,实现了客户端与服务器端的连接,通过虚拟机进行测试 服务器端IP:192.168.37.129 端口1122 客户端IP: 192.168.37.1 端口1122 Server: #co ...

  7. jQuery相关知识总结一

    1day-jquery 1. 1 jQuery 1概念 * JavaScript(ECMA/DOM/BOM)在实际开发中,使用比较麻烦,有浏览器兼容问题. * JavaScript类库(JS库) 的目 ...

  8. SO_REUSEADDR与SO_REUSEPORT平台差异性与测试

    前些天,与另外一个项目组的同事聊天的时候,谈到他遇到的一个有意思的BUG.在window上启动服务器,然后客户端连接的时候收到一些奇怪的消息,查证了,原来是他自己的另一个工具也在相同的地址上监听,客户 ...

  9. 菜鸟帮你跳过openstack配置过程中的坑

    一:前言 对于一个以前做java全栈工程师而言,而且没学过Linux,很少用虚拟机(还是在大学的时候简单的用过),去配置openstack我想我入的坑肯定比有基础的一定要多,躺在每个坑中徘徊思索的时间 ...

  10. Unity3D --对撞机/碰撞器 介绍

    碰撞器一般都用作触发器而用,刚体一般用作真实碰撞. 静态对撞机:一个对象有对撞机组件,没有刚体组件. 这种情况在场景中的静态物体应用较多,比如墙体,房屋等静止不动的物体. 物理引擎假设静态对撞机是不会 ...