一、三节点作用
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
- MongoDB 部署 & 基础命令
MongoDB 官方文档 MongoDB 介绍 Mongodb 由 C++ 语言编写的,是一个基于分布式文件存储的开源数据库系统. 是专为可扩展性,高性能和高可用性而设计的数据库, 是非关系型数据库中 ...
- MongoDB基础命令及操作
MongoDB:NoSQL数据库 MongoDB中的重要指示点 MongoDB中的三要素 数据库 集合 文档 MongoDB中的数据存储是以Bson的形式存储的,Bson是二进制的json,所以看上去 ...
- 【03】循序渐进学 docker:基础命令
写在前面的话 之前谈了啥是 docker 和怎么安装 docker,这里就谈谈 docker 命令的使用,当然,这里的使用可能只是局限于 docker 的增删查改. 另外需要注意的是,为了图片的美观, ...
- 2、链接数据库+mongodb基础命令行+小demo
链接数据库并且打印出数据的流程:1.在CMD里面输入 mongod 2.在CMD里面输入 mongo 3.在输入mongodb命令行里面进行操作,首先输入 show dbs 来查看是否能够链接得上库4 ...
- MongoDB 目录分析、基础命令、参数设置
目录分析 1.整体目录 以msi默认的data.log路径安装,才会有data.log文件夹. 2.bin目录 3.log目录 基础命令 1.服务器端基础命令 net start MongoDB ...
- Mongo分片+副本集集群搭建
一. 概念简单描述 1. MongoDB分片集群包含组件: mongos,configserver,shardding分片 2. Mongos:路由服务是Sharded cluster的访问入口,本身 ...
- 学习 git基础命令
缘起 年后到了新公司,由于个人意愿到了一个海外的项目组,除了自己从Java技术栈转了C#技术栈外,很多技术都是第一次使用,学习压力不小啊. 自己也就先从常用的技术开始学起,比如C#,AngularJS ...
- Linux安全基础:shell及一些基础命令
1.什么是shell?Shell是用户和Linux操作系统之间的接口.Linux中有多种shell,其中缺省使用的是Bash. 2.shell的分类(1)bash bash shell 是 Bourn ...
- LINUX二十个基础命令
LINUX二十个基础命令 一. useradd命令 1.命令格式: useradd 选项 用户名 2.命令功能: 添加新的用户账号 3.常用参数: -c comment 指定一段注释性描述.-d 目录 ...
随机推荐
- JavaScript中的apply()和call()
可以将call()和apply()看做是某个对象的方法,通过调用方法的形式来间接调用函数. call()和apply()的第一个实参是要调用函数的母对象,它是调用上下文,在函数体内通过this来获得对 ...
- vue 脚手架使用
1. npm指令 vue init 模板类型 项目名称 如: vue init webpack-simple mydemo 2.进入刚才生产的 文件夹 mydemo cd mydemo 3.初始化 ...
- Linux之find查找命令
Linux中find常见用法示例 [root@localhost ~]# find [PATH] [option] [action] 参数: 1. 与时间有关的参数:共有-atime.-ctim ...
- CF&&CC百套计划1 Codeforces Round #449 C. Willem, Chtholly and Seniorious (Old Driver Tree)
http://codeforces.com/problemset/problem/896/C 题意: 对于一个随机序列,执行以下操作: 区间赋值 区间加 区间求第k小 区间求k次幂的和 对于随机序列, ...
- 【转】MYSQL数据库设计规范与原则
转载出:http://www.cnblogs.com/lovekingly/p/5044278.htmlMYSQL数据库设计规范 1.数据库命名规范 采用26个英文字母(区分大小写)和0-9的自然数( ...
- ASP.NET对无序列表批量操作的三种方法
在网页开发中,经常要用到无序列表.事实上在符合W3C标准的div+css布局中,无序列表被大量使用,ASP.NET虽然内置了BulletedList控件,用于创建和操作无序列表,但感觉不太好用.本篇介 ...
- golang sql.DB
数据库 sql.DB连接池需知: sql.DB内置连接池,连接不足时会自动创建新连接,新创建的连接使用sql.Open()时传入的dsn来构造. sql.DBClose时只会关闭连接池中的连接,未归还 ...
- 【BZOJ】3453: tyvj 1858 XLkxc 拉格朗日插值(自然数幂和)
[题意]给定k<=123,a,n,d<=10^9,求: $$f(n)=\sum_{i=0}^{n}\sum_{j=1}^{a+id}\sum_{x=1}^{j}x^k$$ [算法]拉格朗日 ...
- 20155302 2016-2017-2 《Java程序设计》第七周学习总结
20155302 2016-2017-2 <Java程序设计>第七周学习总结 教材学习内容总结 Lambda表达式的优点:更加紧凑的代码.修改方法的能力.更好地支持多核处理 "L ...
- mysql 数据范围总结
MEDIUMINT 带符号的范围是-8388608到8388607,无符号的范围是0到16777215,使用3个字节. 一般情况下推荐使用 unsigned (无符号,即只接受正整数)