一、使用Ranged Sharding对集合进行分片

mongo连接到的shell中mongos,使用该sh.shardCollection()方法对集合进行分片。

注意:

  • 必须已为集合所在的数据库启用了分片。

  • 如果集合已包含数据,则必须在使用之前使用该方法在分片键上创建索引 。db.collection.createIndex()shardCollection()

  • 如果集合为空,MongoDB将创建索引作为其中的一部分 sh.shardCollection()

二、使用hash值对集合进行分片

MongoDB计算每个字段的hash值,然后用这些hash值建立chunks。

注意:

哈希分片牺牲了范围查询的性能,让数据相对均匀的分配到各个分片上

三、范围分片实践

(1) 集群中创建数据库eshop和集合users,并増加一条记录。

use eshop
db.users.insert({userid:1,username:"localD",city:"guangzhou"})
 
(2) 观察集群的状态信息,连接mongos端口使用该sh.enableSharding()方法在目标数据库上启用分片。在数据库上启用分片可以在数据库中分片集合。
sh.status()//观察集群的状态信息
sh.enableSharding("eshop")//让数据库shop支持分片

(3) 创建基于片键city的索引,并且设置启用集合分片

db.users.ensureIndex({city:1})//创建基于片键city的索引
sh.shardCollection("eshop.users",{city:1})//启用集合分片

(4) 继续观察集群状态

(5) 继续插入大量数据使集合进行分片

for(var i=1;i<=10000;i++){db.users.insert({userid:i,username:'auser'+i,city:'shenzhen'})}
for(var i=1;i<=10000;i++){db.users.insert({userid:i,username:'buser'+i,city:'beijin'})}
for(var i=1;i<=10000;i++){db.users.insert({userid:i,username:'cuser'+i,city:'hunan'})}

  

(6) 继续观察集群状态

(7) 分别查看分片1、分片2和分片3的存储数据数量

在分片1节点上的数据:

在分片2节点上的数据:

在分片3节点上的数据:

四、哈希分片实践

(1) 集群中创建数据库Hash和使用该sh.enableSharding()方法启用分片。

sh.enableSharding("Hash")

(2)并且设置启用哈希分片

sh.shardCollection("Hash.Hash",{"Uid":"hashed"})

  

(3)插入大量数据使集合进行分片

use Hash
for(i=0;i<10000;i++){ db.Hash.insert({"Uid":i,"Name":"da","Age":21})}

  

(4) 继续观察集群状态

sh.status()

  

分别在分片上查看具体数据

三、分片集群常用的管理命令
1、添加分片

sh.addShard( "<ip>:<端口>" )

2、删除分片

#需要运行两次,如果删除的是大本营,必须先要把数据库移到别的分片上或者删除该数据库
db.runCommand({"removeshard":"<ip>:<端口>"})

3、修改chunk的大小

db.settings.save( { _id:"chunksize", value: 1 } )
db.settings.find()

4、刷新config服务器路由

use admin
db.runCommand("flushRouterConfig");

5、对数据库/集合进行分片

sh.enableSharding("Hash") 或者  db.runCommand({"enablesharding":"eshop"})
sh.shardCollection("Hash.Hash",{"Uid":1}) 或者 db.runCommand({"shardcollection":"eshop.users","key":{"city":1}})
sh.shardCollection("HashTest.HashTest",{"Uid":"hashed"}) //hash分片

6、查看分片集群的状态

sh.status()

7、查看config库信息

 use config 
db.shards.find()//查看分片信息
db.databases.find()//查看分片数据库信息
db.chunks.find()//查看块信息

MongoDB DBA 实践7-----MongoDB的分片集群操的更多相关文章

  1. 【mongoDB运维篇④】Shard 分片集群

    简述 为何要分片 减少单机请求数,降低单机负载,提高总负载 减少单机的存储空间,提高总存空间. 常见的mongodb sharding 服务器架构 要构建一个 MongoDB Sharding Clu ...

  2. Mongodb主从复制/ 副本集/分片集群介绍

    前面的文章介绍了Mongodb的安装使用,在 MongoDB 中,有两种数据冗余方式,一种 是 Master-Slave 模式(主从复制),一种是 Replica Sets 模式(副本集). Mong ...

  3. 网易云MongoDB分片集群(Sharding)服务已上线

    此文已由作者温正湖授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. MongoDB sharding cluster(分片集群)是MongoDB提供的数据在线水平扩展方案,包括 ...

  4. MongoDB 分片集群实战

    背景 在如今的互联网环境下,海量数据已随处可见并且还在不断增长,对于如何存储处理海量数据,比较常见的方法有两种: 垂直扩展:通过增加单台服务器的配置,例如使用更强悍的 CPU.更大的内存.更大容量的磁 ...

  5. mongo 3.4分片集群系列之一:浅谈分片集群

    这篇为理论篇,稍后会有实践篇. 这个系列大致想跟大家分享以下篇章: 1.mongo 3.4分片集群系列之一:浅谈分片集群 2.mongo 3.4分片集群系列之二:搭建分片集群--哈希分片 3.mong ...

  6. MongoDB DBA 实践6-----MongoDB的分片集群部署

    一.分片 MongoDB使用分片技术来支持大数据集和高吞吐量操作. 1.分片目的 对于单台数据库服务器,庞大的数据量及高吞吐量的应用程序对它而言无疑是个巨大的挑战.频繁的CRUD操作能够耗尽服务器的C ...

  7. MongoDB DBA 实践8-----Linux系统Mongodb分片集群部署

    在Linux系统中,主要是使用命令行进行mongodb的分片集群部署 一.先决条件 mongodb安装成功,明确路径, MongoDB的几个路径: /var/lib/mongodb /var/log/ ...

  8. 【八】MongoDB管理之分片集群实践

    MongoDB中集群有三种:主从复制.副本集.分片集群.目前副本集已经替代主从复制架构,成为官方建议采用的架构,而分片集群相较于前两种,更加复杂. 下面是生产环境中常用的分片集群架构: 我们知道,分片 ...

  9. MongoDB 分片集群搭建

    一.概述 分片是一种在多台机器上分配数据的方法.MongoDB使用分片来支持具有非常大的数据集和高吞吐量操作.有两种解决系统增长的方法:垂直扩展和水平扩展. 垂直扩展涉及增加单个服务器的容量,例如使用 ...

随机推荐

  1. ubuntu16下面安装vmware tools后仍然未全屏问题

    1.默认下载ubuntu16的iso镜像后,自带的有vmtools.解压 tar -xzvf  VMwareTools-10.0.6-3595377.tar.gz 进入解压目录. 执行:sudo ./ ...

  2. SQL点点滴滴_判断字段或者字符中是否包含有特殊字符

    SQL Server中,如果我们想判断一个字符串或者数据字段中是否包含有特殊字符.可以使用正则来实现.除了大小字母和数字之外全是特殊字符[^a-zA-Z0-9]

  3. js中问号

    是三目运算,如:(a==b)?a:b 也就是说,先判断a是否等于b,如果是(true),那么返回a,如果否(false),则返回b greeting=(visitor=="PRES" ...

  4. ASProgressPopUpView

    ASProgressPopUpView https://github.com/alskipp/ASProgressPopUpView 效果: -使用- 将源码拖入工程当中: // // RootVie ...

  5. Linux下php-fpm进程过多导致内存耗尽问题

    这篇文章主要介绍了解决Linux下php-fpm进程过多导致内存耗尽问题,需要的朋友可以参考下   最近,发现个人博客的Linux服务器,数据库服务经常挂掉,导致需要重启,才能正常访问,极其恶心,于是 ...

  6. Handlebars.js中集合(list)通过中括号的方式取值

    有这么一个需求,在一个table中,tr是通过each取值,取出的值要与table标题相对应,如何实现?例如: <table> <thead> <tr> {{#ea ...

  7. css动画 文字闪烁效果

    /*定义页面基础CSS*/ body{ font-family: 'microsoft yahei',Arial,sans-serif; color: #EFEFEF; background: #22 ...

  8. Linux命令--压缩解压(简化版)

    Linux tar.gz.tar.bz2.zip 等解压缩.压缩命令详解(简化版) Linux 常用的压缩与解压缩命令有:tar.gzip.gunzip.bzip2.bunzip2.compress ...

  9. 对1001. A+B Format (20)的描述

    Github仓库的链接 https://github.com/deepYY/object-oriented/blob/master/A-B-Format/A.B.Format.c 解题思路: 输入a, ...

  10. oracle-记录

    同時查新多个条件的数量 select sum(DECODE(trim(t.ASSESSED_RESULT),'维持',1,0)) maintainNum, sum(DECODE(trim(t.ASSE ...