1.在3台服务器上分别运行 2717 , 27018,27109,互为副本集,形成3套replSet

2.在3台服务器上各配置config.server,运行在27020端口上,和配置mongod的命令一样,只不过是加上了 --configsrv的参数

3.配置mongos

./bin/mongos --port 30000
--dbconfig 192.168.1.201:27020,192.168.1.202:27020,192.168.1.203.27020(开启奇数台configsrv服务器)

4.连接路由器

./bin/mongo --port 30000

5.添加replSet切片

>sh.addShard('192.168.1.201:27017');
>sh.addShard('192.168.1.202.27017');
>sh.addShard('192.168.1.203:27017');

6.添加待分片的库

>sh.enableSharding(databaseName);

7.添加待分片的表

>sh.shardCollection('dbName',{field:1});
//field是collection的一个字段,系统将会利用field的值来计算应该分到哪一个片上,这个field就叫做“片键”

8.chunk

//chunk就是小块的意思
//db.settings.find();
//可以查看chunk的默认大小
//修改chunk的大小
db.settings.save({_id:'chunksize'},{$set:{value:4}});

linux中查找含有mongo的进程

ps aux | grep mongo

问:为什么10w条数据才2个chunk?

说明chunk比较大,默认的chunk大小是64MB

问:既然优先往某个片上插入,当chunk失衡时,再移动chunk,自然随着数据的增多,shard的实例之间有chunk的来回移动的现象,这将带来什么问题?

答:服务器之间的IO性能问题。

问:能否定义一个规则,某N条数据形成1个块,预先分配给m个chunk,m个chunk预先分配在不同片上,以后的数据直接入各自预分配好的chunk,不再来回移动。

答:能,手动预先分片。

以shop.user表为例,说明一下手动分片的用法

for(var i = 0; i<=40;i++){
sh.splitAt('shop.user',{userid:i*1000}); //预先分割的chunk是空的
}

这个类似打点计数,每隔1000个记录就形成一个chunk,那么就会在goods的数据库中形成40个,1000条记录大小的块分别存放于两个切片当中。这些块都是预先分配好的,切片的位置也预先分配好了,所以以后就不用管数据了,会直接存到这里面来。

预先分片,提前很长时间预计好这些分片的大小,很长时间内都不再多增加分片了,随着数据的增加而增加分片这种情况不适合于手动分片

集群的时候会用到的命令

sh.addShard('relpSetName/IP:port');

复制集对外来看是逻辑上的整体,外面能访问primariy的IP和名称,还有replSet的名称。

Mongodb分片不是单篇文档级别的,而是绝对平均的散落在各个片上,N篇文章形成一个块chunk,优先放在某个片上,当这个片上的chunk比另一个片上的chunk大时,mongodb会以chunk为单位进行片的移动操作,以维护片之间的数据平衡。

页面的全选按钮和分页按钮还没有做,还有日期选择、输入验证、用户登录验证没有做,前4个比较好做,最后一个需要用到filter,也可以现在做

Mongodb--切片的更多相关文章

  1. 【MongoDB】在windows平台mongodb切片集群(三)

    在过去的两年我们博客详细阐述了零碎工作集群和打造过程.在这篇博客中,我们主要分析测试结果一起支离破碎集群. 首先来看看碎片集群的每个状态.你可以看出来复制集A和B都是正常的: 一.开启分片集合 开启一 ...

  2. Mongodb - 切片搭建

    0.概述 mongodb分片搭建,版本号4.0.2,以下除了创建opt文件夹以外,所有操作均在mongodb用户下面执行 准备三台机器:192.168.56.81192.168.56.82192.16 ...

  3. mongodb切片配置方法

    ---------------------------------切片架构图-------------------------------------------------------------- ...

  4. 基于Redis+MySQL+MongoDB存储架构应用

    摘  要: Redis+MySQL+MongoDB技术架构实现了本项目中大数据存储和实时云计算的需求.使用MongoDB切片的水平动态添加,可在不中断平台业务系统的同时保障扩容后的查询速度和云计算效能 ...

  5. MongoDB 3.6.9 集群搭建 - 切片+副本集

    1. 环境准备 在Mongo的官网下载Linux版本安装包,然后解压到对应的目录下:由于资源有限,我们采用Replica Sets + Sharding方式来配置高可用.结构图如下所示: 这里我说明下 ...

  6. python日志,支持彩色打印和文件大小切片写入和写入mongodb

    1.项目中使用了自定义的ColorHandler和MongoHandler,使用了内置的RotatingFileHandler和三方库的ConcurrentRotatingFileHandler. 支 ...

  7. TODO:MongoDB的查询更新删除总结

    TODO:MongoDB的查询更新删除总结 常用查询,条件操作符查询,< .<=.>.>=.!= 对应 MongoDB的查询操作符是$lt.$lte.$gt.$gte.$ne ...

  8. python操作mongodb数据库

    一.MongoDB 数据库操作 连接数据库 import pymongo conn = pymongo.Connection() # 连接本机数据库 conn = pymongo.Connection ...

  9. Python 操作 MongoDB

    原文 这篇文章主要介绍了使用Python脚本操作MongoDB的教程,MongoDB作为非关系型数据库得到了很大的宣传力度,而市面上的教程一般都是讲解JavaScript的脚本操作,本文则是基于Pyt ...

  10. mongodb python image 图像存储读取

    最近做一些数据库调研的工作,目标是实现影像更快的入库.出库.查询,并实现并行访问等操作. 将结果总结成一个mongoImg类,也算是小结吧. ''' Created on 2013-8-6 class ...

随机推荐

  1. P1228 地毯填补问题(分治)

    P1228 地毯填补问题(分治) 题目描述 相传在一个古老的阿拉伯国家里,有一座宫殿.宫殿里有个四四方方的格子迷宫,国王选择驸马的方法非常特殊,也非常简单:公主就站在其中一个方格子上,只要谁能用地毯将 ...

  2. bzoj1895

    fhqtreap 其实fhqtreap只有可持久化之后才用新建节点... reverse和splay一样. //#include<bits/stdc++.h> #include<cs ...

  3. Java 发送短信

    这是一个调用sms接口发短信的程序,支持同时发送的短信量并不是很大,只作为学习使用(当然如果你想内部使用也行) 源码:package com; import org.apache.commons.ht ...

  4. Greenplum使用教程

    Greenplum简介 GreenPlum是一个关系型数据库集群.,它实际上是由多个独立的数据库服务组合成的逻辑数据库.GreenPlum是基于PostgreSQL(开源数据库)的分布式数据库,它采用 ...

  5. Angular 显示英雄列表

    在本页面,你将扩展<英雄指南>应用,让它显示一个英雄列表, 并允许用户选择一个英雄,查看该英雄的详细信息. 创建模拟(mock)英雄数据 你需要一些英雄数据以供显示. 最终,你会从远端的数 ...

  6. ReverseEngineerCodeFirst 自定义模板

    1.在你要生成的项目里面在根目录下面添加CodeTemplates文件夹,并在该文件夹下面创建子文件夹ReverseEngineerCodeFirst 2.在ReverseEngineerCodeFi ...

  7. yaml标记语言的简介

    今天遇到yml这个文件,挺懵的.也是百度了一把. 这篇博文不错:http://www.ibm.com/developerworks/cn/xml/x-1103linrr/ 这图画得不错:http:// ...

  8. SQLServer XXX IS NOT NULL

    SQLServer中不能使用像Java和C#中的  XXX!=null   这种用法, 使用上面的用法返回值永远是False False False 正确的用法应该是--> XXXis not ...

  9. Java算法——求出两个字符串的最长公共字符串

    问题:有两个字符串str1和str2,求出两个字符串中最长公共字符串. 例如:“acbbsdef”和"abbsced"的最长公共字符串是“bbs” 算法思路: 1.把两个字符串分别 ...

  10. 【WPF】使用 XAML 的 Trigger 系统实现三态按钮

    利用 WPF 的 Trigger 系统,也可以很简单的只使用xmal实现三态按钮.在Window或UserControl的资源中声明按钮的style并加入触发功能.使用的时候直接在button里复写s ...