MongoDB部署实战(一)MongoDB在windows平台分片集群部署
前言-为什么我要使用mongodb
最近我公司要开发一个日志系统,这个日志系统包括很多类型,错误的,操作的,...用MongoDB存储日志,大量的日志产生,大量读写吞吐量很大的时候,单个Server很难满足需求,这里就要用到mongodb分片集群
一、MongoDB的分片简介
分片(sharding)是指将数据拆分,将其分散存在不同的机器上的过程。有时也用分区(partitioning)来表示这个概念。

请先安装MongoDB成功后继续本操作
二、先来了解一下分片的组成
--片
片是保存子集数据的容器,片可是单个Mongod服务器,也可以是副本集。
--mongos
mongos就是MongoDB各版本中都配的路由器进程。它路由所有请求,然后将结果聚合。它本身并不存储数据或者配置信息。
--配置服务器
配置服务器存储了集群的配置信息:数据和片的对应关系。Mongos不永久存放数据,所有需要个地方存放分片配置。它会从配置服务器获取同步数据。
三、动手操作
1.首先建立测试程序需要的文件夹(MongoDB/data/)
这里我的文件夹配置
D:/MongoDB/data/config 配置服务器
D:/MongoDB/data/shard1 分片1
D:/MongoDB/data/shard2 分片2
2.启动和配置服务器
|
1
|
Mongod --dbpath d:/mongodb/data/config --port 20000 |
3.建立mongos进程,以供应用程序连接
|
1
|
Mongos --port 30000 --configdb localhost:20000 |
分片管理都是由mongos完成的
4.添加片
启动分片一
|
1
|
Mongod --dbpath d:mongodb/data/shard1 --port 10000 |
启动分片二
|
1
|
Mongod --dbpath d:mongodb/data/shard2 --port 10001 |
这里你可以添加多个片,这里我就只添加两个片
连接刚才启动的mongos,为集群添加片,启动shell输入一下命令
|
1
|
Mongo localhost:30000/admin |

添加刚才配置的片
|
1
2
|
db.runCommand({addshard:”localhost:10000”,allowLocal:true})db.runCommand({addshard:”localhost:10001”,allowLocal:true}) |

上图错误是博主写文章的时候分片已经条件过了导致的
分片已经添加完成后,我们现在要让mongodb切分一下数据,首先先要添加需要切分的数据库
|
1
|
db.runCommand({“enablesharding”:”foo”}) |
对数据库切分后,内部的集合就会存储到不同的片
对库添加了切分条件,我们还需要对集合切分,下面的列子是按照“_id”为基准对foo下面的test集合切分数据
|
1
|
db.runCommand({“shardcollection”:”foo.test”,”key”:{“_id”:1}}) |
这样在test中添加数据,集合就会按照“_id”分散到各个分片上了
现在我们来测试一下刚才分片的数据
使用use命令切换到分片的库上。
|
1
|
use foo |
循环插入10W条数据查看一下分片的结果
|
1
|
for(i=0;i<100000;i++){ db.test.insert({"Uid":i,"Date":new Date()}); } |
同时查看分片1和分片2看看数据是不是平均分布了
四、可能导致的错误列表
连接某个分片或者服务器连接不上错误:10061
开启了服务器请勿关闭窗口,按照上面的操作应该存在5个窗口

以上文章理论资料参考《Mongodb权威指南》
MongoDB部署实战(一)MongoDB在windows平台分片集群部署的更多相关文章
- MongoDB在windows平台分片集群部署
本文转载自:https://www.cnblogs.com/hx764208769/p/4260177.html 前言-为什么我要使用mongodb 最近我公司要开发一个日志系统,这个日志系统包括很多 ...
- MongoDB DBA 实践8-----Linux系统Mongodb分片集群部署
在Linux系统中,主要是使用命令行进行mongodb的分片集群部署 一.先决条件 mongodb安装成功,明确路径, MongoDB的几个路径: /var/lib/mongodb /var/log/ ...
- mongoDB研究笔记:分片集群部署
前面几篇文章的分析复制集解决了数据库的备份与自动故障转移,但是围绕数据库的业务中当前还有两个方面的问题变得越来越重要.一是海量数据如何存储?二是如何高效的读写海量数据?尽管复制集也可以实现读写分析,如 ...
- MongoDB DBA 实践6-----MongoDB的分片集群部署
一.分片 MongoDB使用分片技术来支持大数据集和高吞吐量操作. 1.分片目的 对于单台数据库服务器,庞大的数据量及高吞吐量的应用程序对它而言无疑是个巨大的挑战.频繁的CRUD操作能够耗尽服务器的C ...
- MongoDB分片集群部署方案
前言 副本集部署是对数据的冗余和增加读请求的处理能力,却不能提高写请求的处理能力:关键问题是随着数据增加,单机硬件配置会成为性能的瓶颈.而分片集群可以很好的解决这一问题,通过水平扩展来提升性能.分片部 ...
- 【深入 MongoDB 开发】使用正确的姿势连接分片集群
MongoDB分片集群(Sharded Cluster)通过将数据分散存储到多个分片(Shard)上,来实现高可扩展性.实现分片集群时,MongoDB 引入 Config Server 来存储集群的元 ...
- monodb分片集群部署
本文档基于MongoDB版本3.6.2 下载地址: 建议使用最新版本 https://www.mongodb.com/download-center#community 安装文件 集群ip及端口设计方 ...
- mongo分片集群部署
测试环境192.168.56.101-213 前期准备: openssl rand -base64 756 > /home/software/mongodb/mongodbkey chmod ...
- Mongodb分片集群技术+用户验证
随着数据量持续增多,后续迟早会出现一台机器硬件瓶颈问题的.而mongodb主打的就是海量数据架构,“分片”就用这个来解决这个问题. 从图中可以看到有四个组件:mongos.config server. ...
随机推荐
- 一次穿墙渗透测试,利用IPC跨域
Shell是怎么拿下的我们就不纠结了. 我们来上传菜刀一句话,来仔细分析分析. 先来看看内网环境把. 很高兴的是现在管理员在线.可以抓去文明密码. 但是很悲催的又是.服务器不支持走TCP协议.HTTP ...
- redhat6.4 数据包无法到达
由于redhat在初始化的时候,防火墙设置为icmp-host-prohibited,导致数据包无法到达. 具体iptables(所在目录/etc/sysconfig)如下: # Firewall c ...
- Hypernetes简介——真正多租户的Kubernetes Distro
http://www.dockone.io/article/838 Hypernetes是一个真正多租户的Kubernetes Distro. Hypernetes在Kubernetes基础上增加了多 ...
- css文本(教程)
1.text-transform --文本转换 定义文本的大小写状态,此属性对中文无意义 取值:capitalize | uppercase | lowercase | none | inherit ...
- ng2 学习笔记(一)
ng2发布了一段时间,最近才开始着手学习一下,ng2可以说变化海是比较大的,现在写一些学习过程中要注意的点,新手可以参考,大神可以指导: 按照文档来吧: 1.快速开始:没什么可说的,直接上git 克隆 ...
- python 实现简单点名程序
程序会遍历文件所有姓名,遍历完之前不会有重复值,遍历所有后将提示推出. #-*-coding:utf-8-*-#author:wangxing #点名程序 import randomimport os ...
- Job for docker.service failed because the control process exited with error code. See "systemctl status do cker.service" and "journalctl -xe" for details.
问题出现 :入手操作Docker时,安装启动后报了这个错 Job for docker.service failed because the control process exited with e ...
- 【51nod-1183】编辑距离
链接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1183 #include <bits/stdc++.h> ...
- 如何拿到半数面试公司Offer——我的Python求职之路(转载)
从八月底开始找工作,短短的一星期多一些,面试了9家公司,拿到5份Offer,可能是因为我所面试的公司都是些创业性的公司吧,不过还是感触良多,因为学习Python的时间还很短,没想到还算比较容易的找到了 ...
- HTML中的颜色简写
1.HTML中颜色的五种写法 1)直接用颜色英文名字表示 例如表示背景颜色为白色: 2.通过16进制数表示 例如表示背景颜色为黑色 3).通过RGB方式表示 RGB:是红色(red)绿色(green) ...