一、三节点作用
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 目录 ...
随机推荐
- Sentence-seven basic patterns 英语句子结构
Meaning of some words subject 主语 verb 动词 object 宾语 adverbial 状语 complement 补语 imperative sentence 祈 ...
- c# lock的误解
一直以为lock 一个实例就可以了,没想到实例的类型还是有区别的 static object lockObjStatic = new object(); object lockObj = new ob ...
- C++的一些不错开源框架,可以学习和借鉴
from https://www.cnblogs.com/charlesblc/p/5703557.html [本文系外部转贴,原文地址:http://coolshell.info/c/c++/201 ...
- 第八届蓝桥杯c/c++省赛题目整理
第一题 标题: 购物单 小明刚刚找到工作,老板人很好,只是老板夫人很爱购物.老板忙的时候经常让小明帮忙到商场代为购物.小明很厌烦,但又不好推辞. 这不,XX大促销又来了!老板夫人开出了长长的购物单,都 ...
- 机器学习算法整理(一)线性回归与梯度下降 python实现
回归算法 以下均为自己看视频做的笔记,自用,侵删! 一.线性回归 θ是bias(偏置项) 线性回归算法代码实现 # coding: utf-8 get_ipython().run_line_mag ...
- SXOI2018 游记
noilinux@Capella:~$ cd /Memories/ noilinux@Capella:/Memories$ rm *SXOI* rm:是否删除有写保护的普通文件 "SXOI2 ...
- Git Cannot rebase: You have unstaged changes.
Cannot rebase: You have unstaged changes. 那说明你有修改过的文件git stashgit pull --rebase (每次push之前最好这样做一次)git ...
- 【leetcode 简单】 第一百四十六题 最长和谐子序列
和谐数组是指一个数组里元素的最大值和最小值之间的差别正好是1. 现在,给定一个整数数组,你需要在所有可能的子序列中找到最长的和谐子序列的长度. 示例 1: 输入: [1,3,2,2,5,2,3,7] ...
- JavaScript逻辑运算符
逻辑运算符 或与非:&& || ! ----------------------------------------------------------- ...
- 【译】第二篇 Replication:分发服务器的作用
本篇文章是SQL Server Replication系列的第二篇,详细内容请参考原文. 分发服务器是SQL Server复制的核心组件.分发服务器控制并执行数据从一个服务器移动到另一个服务器的进程. ...