MongoDB DBA 实践7-----MongoDB的分片集群操
一、使用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"})
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库信息

MongoDB DBA 实践7-----MongoDB的分片集群操的更多相关文章
- 【mongoDB运维篇④】Shard 分片集群
简述 为何要分片 减少单机请求数,降低单机负载,提高总负载 减少单机的存储空间,提高总存空间. 常见的mongodb sharding 服务器架构 要构建一个 MongoDB Sharding Clu ...
- Mongodb主从复制/ 副本集/分片集群介绍
前面的文章介绍了Mongodb的安装使用,在 MongoDB 中,有两种数据冗余方式,一种 是 Master-Slave 模式(主从复制),一种是 Replica Sets 模式(副本集). Mong ...
- 网易云MongoDB分片集群(Sharding)服务已上线
此文已由作者温正湖授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. MongoDB sharding cluster(分片集群)是MongoDB提供的数据在线水平扩展方案,包括 ...
- MongoDB 分片集群实战
背景 在如今的互联网环境下,海量数据已随处可见并且还在不断增长,对于如何存储处理海量数据,比较常见的方法有两种: 垂直扩展:通过增加单台服务器的配置,例如使用更强悍的 CPU.更大的内存.更大容量的磁 ...
- mongo 3.4分片集群系列之一:浅谈分片集群
这篇为理论篇,稍后会有实践篇. 这个系列大致想跟大家分享以下篇章: 1.mongo 3.4分片集群系列之一:浅谈分片集群 2.mongo 3.4分片集群系列之二:搭建分片集群--哈希分片 3.mong ...
- MongoDB DBA 实践6-----MongoDB的分片集群部署
一.分片 MongoDB使用分片技术来支持大数据集和高吞吐量操作. 1.分片目的 对于单台数据库服务器,庞大的数据量及高吞吐量的应用程序对它而言无疑是个巨大的挑战.频繁的CRUD操作能够耗尽服务器的C ...
- MongoDB DBA 实践8-----Linux系统Mongodb分片集群部署
在Linux系统中,主要是使用命令行进行mongodb的分片集群部署 一.先决条件 mongodb安装成功,明确路径, MongoDB的几个路径: /var/lib/mongodb /var/log/ ...
- 【八】MongoDB管理之分片集群实践
MongoDB中集群有三种:主从复制.副本集.分片集群.目前副本集已经替代主从复制架构,成为官方建议采用的架构,而分片集群相较于前两种,更加复杂. 下面是生产环境中常用的分片集群架构: 我们知道,分片 ...
- MongoDB 分片集群搭建
一.概述 分片是一种在多台机器上分配数据的方法.MongoDB使用分片来支持具有非常大的数据集和高吞吐量操作.有两种解决系统增长的方法:垂直扩展和水平扩展. 垂直扩展涉及增加单个服务器的容量,例如使用 ...
随机推荐
- sql server 查询分析器中表名无效,有红线,其实是这张表的
ctrl+shift+R 就OK了,就是刷新本地缓存.
- 如何在 Azure 中的经典 Windows 虚拟机上设置终结点
在 Azure 中使用经典部署模型创建的所有 Windows 虚拟机都可以通过专用网络通道与同一云服务或虚拟网络中的其他虚拟机自动通信. 但是,Internet 或其他虚拟网络中的计算机需要终结点将入 ...
- HBuilder设置APP状态栏
一. 前言 状态栏就是手机屏幕最顶部的区域,包括了:信号.运营商.电量等信息.通常APP都有属于自己的色调风格,为了达到整体视觉美观,通常会设置状态栏和标题栏的色调设置成一致. 图例: 二.状态栏状态 ...
- String str = "1,2,3,4,5,6" 如何将这个字符串转换成int数组
String str = "1,2,3,4,5,6"; string[] strS = str.Split(','); int[] num = new int[strS.Lengt ...
- iOS设计模式 - 策略
iOS设计模式 - 策略 效果 说明 1. 把解决相同问题的算法抽象成策略(相同问题指的是输入参数相同,但根据算法不同输出参数会有差异) 2. 策略被封装在对象之中(是对象内容的一部分),策略改变的是 ...
- SQL insert语句中插入带有特殊符号
1.插入数据库字符串中海油单引号,需要转义处理,例如插入“I‘m OK!” SQL语句: INSERT INTO tableTest(FileTXT) VALUES('I''m OK!') 2.如果S ...
- Tableau10.4中智能显示点击后消失的解决方案
如果你的电脑是Win10,并且是高分屏,可能会出现和我一样的问题,就点击智能显示后,发现找不到了. 那么解决方案就是: 这样就能找到智能显示了.
- 4、集合set的功能介绍
集合是易变(可改变)和无序聚集.集合set支持迭代,很像无值(或仅有键的)字典,用花括号表示{}. 1.集合的创建: 可以通过调用内建函数set()来创建,及向其传递一个迭代,该迭代的项目成为形成 ...
- 1、Python代码初识
由于python2.7版本默认使用的是ASCII码,必须在编写前加入两行代码,表示使用UTF-8码. #!/usr/bin/python # -*- coding:utf-8 -*- print('你 ...
- BZOJ1089:[SCOI2003]严格n元树(DP,高精度)
Description 如果一棵树的所有非叶节点都恰好有n个儿子,那么我们称它为严格n元树.如果该树中最底层的节点深度为d (根的深度为0),那么我们称它为一棵深度为d的严格n元树.例如,深度为2的严 ...