一、三节点作用
Shard:
用于存储实际的数据块,实际生产环境中一个shard server角色可由几台机器组个一个replica set承担,防止主机单点故障
Config Server:
mongod实例,存储了整个 ClusterMetadata,其中包括 chunk信息。
Query Routers:
前端路由,客户端由此接入,且让整个集群看上去像单一数据库,前端应用可以透明使用。
 
 
 
 
二、基础命令
1、为数据库启用分片(test数据库)
sh.enableSharding("test1")
2、使用hash分片某个集合(test数据库中的users集合,username是文档中的key)
sh.shardCollection("test1.users", {username: "hashed"})
插入1w数据
for (var i = 1; i <= 1000; i++) { db.users.insert({username: "name" + i}) }
3、唯一索引 db.recharge_order.ensureIndex({ "order_id": 1},{"unique":true});
4、查看索引:db.recharge_order.getIndexes()
5、授权:use admin
db.createUser({ user: 'root', pwd:'P8O6!FLLsXmf', roles:['root']})会自动同步到其他节点
db.createUser({ user: 'qa_select', pwd:'Zlongame1234', roles:['read']})
6、查看分片中的db.users.stats() 
(1) 细致到collection的显示:sh.status()
(2)仅显示分片:
use config
db.shards.find()
(3)use admin
db.runCommand({listshards: 1})
列出所有的shard server
db.printShardingStatus();
 
7、查看mongo均衡器
use config
db.locks.find(( { _id : "balancer" })).pretty()
state 只有 0 关闭 1 正在获取状态 2 正在均衡
8、添加分片:sh.addShard("IP:Port")
sh.addShard(":") #添加分片
9、删除分片
db.runCommand({"removeshard":"mab"}) #删除mab分片
db.adminCommand({"movePrimary":"db","to":"shard0001"}) #移动dba的主分片到shard0001.
10、查看各分片的状态:mongostat --discover
11、从节点开启查询功能rs.slaveOk();
13、设置慢查询
db.getProfilingLevel() #查看状态
1
shardset1:PRIMARY> db.setProfilingLevel(1,100)#设置
{ "was" : 1, "slowms" : 200, "ok" : 1 }
shardset1:PRIMARY> db.getProfilingLevel()#查看级别
1
shardset1:PRIMARY> db.getProfilingStatus() #
{ "was" : 1, "slowms" : 100 }
查看db.system.profile.find().pretty()
 
三、配置信息说明,config库的介绍。
① 分片信息:config.shards
mongos> db.shards.find()
② 分片中所有数据库信息:config.databases
mongos> db.databases.find()
③ 分片集合信息:config.collections
mongos> db.collections.findOne()
④ mongos路由的信息:config.mongs 。可以查看所有mongos的状态
mongos> db.mongos.findOne()
⑤ 均衡器锁的信息:config.locks,记录所有集群范围的锁,可得知哪个mongos是均衡器。
mongos> db.locks.findOne()
⑥ 记录所有块的信息:config.chunks,也可以通过sh.status()查看
mongos> db.chunks.find().pretty()
⑦ 记录所有的分片操作:config.changelog,拆分、迁移
db.changelog.find().pretty()
⑧ 分片标签:config.tags,sh.addShardTag
mongos> db.tags.findOne()
⑨ 分片设置:config.settings,设置分片块的大小和开启关闭均衡器
mongos> db.settings.find()
⑩ 网络连接数: db.adminCommand({"connPoolStats":1})
mongos> db.adminCommand({"connPoolStats":1})
 
四、均衡器:均衡器是使用块数量的多少,而不是数据的大小进行均衡
均衡器负责数据的迁移,会周期性的检查分片是否存在不均衡,如果存在则会进行块的迁移,不会影响到mongos正常的操作。均衡器进行均衡的条件是块数量的多少,而不是块大小,比如A片有几个较大的块,B片有很多较小的块,则均衡器会把B的分片迁移至A片。
① 关闭/开启自动均衡器:
mongos> sh.setBalancerState(false) #关闭均衡器
mongos> db.settings.find({"_id" : "balancer"})
{ "_id" : "balancer", "stopped" : true}
mongos> sh.setBalancerState(true) #开启均衡器
mongos> db.settings.find({"_id" : "balancer"})
{ "_id" : "balancer", "stopped" : false}
mongos> sh.stopBalancer() #关闭均衡器
Waiting for active hosts...
Waiting for active host mongo2:30000 to recognize new settings... (ping : Mon Jul 27 2015 16:08:33 GMT+0800 (CST))
Waiting for the balancer lock...
Waiting again for active hosts after balancer is off...
mongos> db.settings.find({"_id" : "balancer"})
{ "_id" : "balancer", "stopped" : true}
mongos> sh.startBalancer() #开启均衡器
mongos> db.settings.find({"_id" : "balancer"})
{ "_id" : "balancer", "stopped" : false}
查看均衡器的锁:
mongos> use config
mongos> db.locks.find( { _id : "balancer" } ).pretty()
 
② 指定均衡器的工作时间:activeWindow
mongos>
db.settings.update({"_id":"balancer"},{"$set":{"activeWindow":{"start":"07:00:00","stop":"03:00:00"}}},true)
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
mongos> db.settings.findOne({"_id":"balancer"})
{
"_id" : "balancer",
"stopped" : false,
"activeWindow" : { #凌晨7点到第二天凌晨3点开启均衡器功能。
"start" : "07:00:00",
"stop" : "03:00:00"
}
}
 
 
mongo 随机获取数据
https://docs.mongodb.com/manual/reference/operator/aggregation/sample/#behavior

Mongo分片基础命令的更多相关文章

  1. MongoDB 部署 & 基础命令

    MongoDB 官方文档 MongoDB 介绍 Mongodb 由 C++ 语言编写的,是一个基于分布式文件存储的开源数据库系统. 是专为可扩展性,高性能和高可用性而设计的数据库, 是非关系型数据库中 ...

  2. MongoDB基础命令及操作

    MongoDB:NoSQL数据库 MongoDB中的重要指示点 MongoDB中的三要素 数据库 集合 文档 MongoDB中的数据存储是以Bson的形式存储的,Bson是二进制的json,所以看上去 ...

  3. 【03】循序渐进学 docker:基础命令

    写在前面的话 之前谈了啥是 docker 和怎么安装 docker,这里就谈谈 docker 命令的使用,当然,这里的使用可能只是局限于 docker 的增删查改. 另外需要注意的是,为了图片的美观, ...

  4. 2、链接数据库+mongodb基础命令行+小demo

    链接数据库并且打印出数据的流程:1.在CMD里面输入 mongod 2.在CMD里面输入 mongo 3.在输入mongodb命令行里面进行操作,首先输入 show dbs 来查看是否能够链接得上库4 ...

  5. MongoDB 目录分析、基础命令、参数设置

    目录分析 1.整体目录 以msi默认的data.log路径安装,才会有data.log文件夹. 2.bin目录 3.log目录 基础命令 1.服务器端基础命令 net  start  MongoDB  ...

  6. Mongo分片+副本集集群搭建

    一. 概念简单描述 1. MongoDB分片集群包含组件: mongos,configserver,shardding分片 2. Mongos:路由服务是Sharded cluster的访问入口,本身 ...

  7. 学习 git基础命令

    缘起 年后到了新公司,由于个人意愿到了一个海外的项目组,除了自己从Java技术栈转了C#技术栈外,很多技术都是第一次使用,学习压力不小啊. 自己也就先从常用的技术开始学起,比如C#,AngularJS ...

  8. Linux安全基础:shell及一些基础命令

    1.什么是shell?Shell是用户和Linux操作系统之间的接口.Linux中有多种shell,其中缺省使用的是Bash. 2.shell的分类(1)bash bash shell 是 Bourn ...

  9. LINUX二十个基础命令

    LINUX二十个基础命令 一. useradd命令 1.命令格式: useradd 选项 用户名 2.命令功能: 添加新的用户账号 3.常用参数: -c comment 指定一段注释性描述.-d 目录 ...

随机推荐

  1. [Spark]-Spark发展历程与基本概念

    Hadoop十年 找了一张Hadoop十年的生态发展图: Spark概况: Apache Spark是一个开源簇运算框架,最初是由加州大学柏克莱分校AMPLab所开发.相对于Hadoop的MapRed ...

  2. P2243 电路维修

    P2243 电路维修 题目背景 Elf 是来自Gliese 星球的少女,由于偶然的原因漂流到了地球上.在她无依无靠的时候,善良的运输队员Mark 和James 收留了她.Elf 很感谢Mark和Jam ...

  3. 【转载】C#, VB.NET如何将Excel转换为PDF

    在日常工作中,我们经常需要把Excel文档转换为PDF文档.你是否在苦恼如何以C#, VB.NET编程的方式将Excel文档转换为PDF文档呢?你是否查阅了许多资料,运用了大量的代码,但转换后的效果依 ...

  4. CSS实现DIV层背景透明而文字不透明

    在我们设计制作一些网页的时候可能会用到半透明的效果,首先我们可能会想到用PNG图片处理,当然这是一个不错的办法,唯一的兼容性问题就是ie6 下的BUG,但这也不困难,加上一段js处理就行了.但假如我们 ...

  5. 2016-2017-20155329 《Java程序设计》第5周学习总结

    学号 2016-2017-20155329 <Java程序设计>第5周学习总结 教材学习内容总结 Java中所有错误都会被打包为对象,运用try.catch,可以在错误发生时显示友好的错误 ...

  6. HDU 1994 利息计算 数学题

    解题报告:算利息的,不过一开始格式控制符里面少写了一个%lf,一直没看到,愣是没找到错误,唉! #include<cstdio> int main() { int T; scanf(&qu ...

  7. redis写定时任务获取root权限

    前提: 1.redis由root用户启动. 2.开启cron的时候,/var/spool/cron linux机器下默认的计划任务,linux会定时去执行里面的任务. 启动服务 :/sbin/serv ...

  8. 2016.5.16——leetcode:Reverse Bits(超详细讲解)

    leetcode:Reverse Bits 本题目收获 移位(<<  >>), 或(|),与(&)计算的妙用 题目: Reverse bits of a given 3 ...

  9. 20165230 2017-2018-2 《Java程序设计》第5周学习总结

    20165230 2017-2018-2 <Java程序设计>第5周学习总结 教材学习内容总结 第七章 内部类与异常类 内部类与外嵌类 可以在类中定义另一个类,即内部类 包含内部类的类为内 ...

  10. jQuery文档处理(追加删除)——(三)

    1.追加内容