Mongo分片基础命令

一、三节点作用

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"

}

}

原文地址:https://www.cnblogs.com/leochenliang/p/8761334.html

时间: 2024-08-05 04:37:52

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

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

链接数据库并且打印出数据的流程:1.在CMD里面输入 mongod 2.在CMD里面输入 mongo 3.在输入mongodb命令行里面进行操作,首先输入 show dbs 来查看是否能够链接得上库4.定义db var db = connect('log'); //链接数据库 链接的是哪一个数据库?5.插入数据:db.login.insert(jsonData); //插入数据 5.命令行一:基础命令行(1).查看存在数据库命令 : show dbs (2).查看数据库版本命令 : db.ver

Mongo分片+副本集集群搭建

一. 概念简单描述 1. MongoDB分片集群包含组件: mongos,configserver,shardding分片 2. Mongos:路由服务是Sharded cluster的访问入口,本身不存储数据(1) 负载处理客户端连接;(2) 负责集群数据的分片 3. Configserver: 配置服务器,存储所有数据库元信息(路由.分片)的配置.mongos本身没有物理存储分片服务器和数据路由信息,只是缓存在内存里,配置服务器则实际存储这些数据.mongos第一次启动或者关掉重启就会从 c

【系统知识点】linux入门基础命令

大概总结了一下一些基础命令,仅仅是帮助基础使用linux文件系统,如果还有相关基础命令,希望大家留言一起补充汇总一下! 命令的基本格式: 格式:command [-options] parameter1 parameter2 - ps:第一个被输入的数据绝对是命令或者是可执行文件 cat /etc/redhat-release//查看系统版本 uname -r//查看内核版本 uname -m//查看系统位数 pwd: print working directory,显示用户当前所在目录 ls 

Gi之(二)Git基础命令

三个工作区域 使用Git之前,首先要弄清Git的三个管理区域,有助于理解Git的运行原理,以及每个Git命令对文件造成的影响. 对于任何一个文件,在本地的Git内部都有三种状态: l   已修改(modified) 表示修改了某个文件,但还没有提交保存.包括新增.删除了一个文件,也属于已修改状态的一种. l   已暂存(staged) 表示把已修改的文件放到了暂存区,也就是放到了下次提交时的清单中. l   已提交(committed) 表示该文件已经被安全地保存在本地数据库中了. 三种状态对应

Linux下的基础命令介绍(一)

一.基础命令 1.type命令----查看命令的类型 a.内置命令(内部命令)shell内置 b.外部命令----在文件系统的某个路径下有一个与命令名称一致的可执行文件 用法:type 命令名 根据返回的值判断,如果值为 is a shell builtin 那么它是内置命令,如果不是这个值而是一个路径 那么它是外部命令 2.printenv命令---查看环境变量 echo $PATH ----输出环境变量的值,使用冒号分割的路径 3.set命令--查看所有的系统变量 4.echo命令--输出变

Linux基础命令(之一)详解

Linux基础命令(之一)详解 学习linux的朋友都知道,系统大多数操作都是命令行的操作方式,当然如今也有图形化界面的操作方式,但是多数情况下仍然使用命令的操作模式,所以命令的作用与用法是成为学好.学会Linux系统的必备前提,也是重点之一,所以今天来聊一聊一些基础命令的用法与其作用. 1.系统关机或重启命令(小白也必须要会的) shutdown (win 系统也有) 常用参数:shutdown -h (halt) 直接关机(关闭电源) shutdown -h  now[+10]    现在关

linux基础命令——tree

Linux基础命令--tree 编辑文章 -d :只显示目录,不显示其目录下的子文件 -L level:显示第几级 图片描述 显示以rc开头的 备份: 创建多级目录: -v:可以看过程

Linux入门基础命令(四)

Linux入门基础命令(四)文件系统与目录结构: 1.文件和被组织成一个单根倒置树结构2.文件系统从根目录下开始,用"/表示"3.以.开头的文件为隐藏文件4.路径分割的 /5.文件有两类数据(元数据:metadata 数据:data)6.文件系统分层结构:LSB(Linux Standard Base)FHS:(Filesystem Hierarchy Standard)7.文件名最长255个字节8.包括路径在内文件名称最长4095个字节9.蓝色-->目录 绿色-->可执行

Linux入门基础命令—cp

Linux入门基础命令-cpcp格式有以下几种 A1.如果SOURCE是一个文件,目标文件不存在:当将SOURCE复制到另外一个当前目录下不存在的文件(会新建这个文件)比如下面的这个例子是把issue复制到abc文件中,而本来当前目录app是不存在abc这个文件的,当进行复制的时候会自动生成abc这个文件,当然这两个文件只是名字不同大小是一样的: A2.如果将上述的命令再执行一遍,本来abc这个文件是已经有内容了,若再去执行,那么issue中的内容将会覆盖掉原来abc中的内容(下面红色箭头所指的