设备:
  三个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. 存储结构比较vector,list,dequeue,stack(转)

        vector适用:对象数量变化少,简单对象,随机访问元素频繁list适用:对象数量变化大,对象复杂,插入和删除频繁最大的区别是,list是双向的,而vector是单向的.因此在实际使用时,如何 ...

  2. 微信小程序框架探究和解析

    何为框架 你对微信小程序的技术框架了解多少? 对wepy 框架进行一系列的深入了解 微信小程序框架解析和探究 小程序组件化框架WePY 在性能调优上做出的探究 开发者培训班上海专场PPT分享:小程序框 ...

  3. 【分享】01. Eclipse for PHP + phpStudy 搭建php开发环境

    配置php编译器 配置phpStudy服务器项目发布目录 修改hosts文件127.0.0.1      www.350zx.cn 新建项目 启动的你的phpStudy  

  4. zookeeper-3.4.5安装&3台机器安装之后 ./zkServer.sh status 之后会显示“Error contacting service. It is probably not running.”的解决办法

    安装文件上传工具:yum install lrzsz成功安装后有如下的提示:Complete![root@server01 apps]# yum install lrzszLoaded plugins ...

  5. 查看ubuntu的内核版本&获取roo…

    1.查看内核版本命令 [root@AY130616190837708391Z ~]# cd .. (管理员权限) [root@AY130616190837708391Z /]# cd proc [ro ...

  6. 17.leetcode 237. Delete Node in a Linked List

    Write a function to delete a node (except the tail) in a singly linked list, given only access to th ...

  7. vue+mockjs 模拟数据,实现前后端分离开发

    在项目中尝试了mockjs,mock数据,实现前后端分离开发. 关于mockjs,官网描述的是 1.前后端分离 2.不需要修改既有代码,就可以拦截 Ajax 请求,返回模拟的响应数据. 3.数据类型丰 ...

  8. IIS7.5应用程序池集成模式和经典模式的区别介绍

    IIS7.5应用程序池集成模式和经典模式的区别介绍 作者:  字体:[增加 减小] 类型:转载 时间:2012-08-07   由于最近公司服务器上需要将iis的应用程序池全部都升级到4.0的框架,当 ...

  9. android.intent.action.MAIN与android.intent.category.LAUNCHER

    android.intent.action.MAIN 决定应用程序最先启动的Activity android.intent.category.LAUNCHER 决定应用程序是否显示在程序列表里 在网上 ...

  10. 一步一步学MySQL-日志文件

    错误日志 错误日志不用多说,记录了mysql运行过程中的错误信息,当出现问题时,我们可以通过错误日志查找线索. 慢查询日志 可以通过参数long_query_time来设置时间,当sql语句执行超过指 ...