【Mongodb】Mongodb sharding 管理之一

本文涉及的产品
云数据库 MongoDB,通用型 2核4GB
简介:
前面介绍了sharding的基本搭建和大量插入数据测试,本文介绍一些sharding相关查询操作
1 判断是否是shard 集群
mongos> db.runCommand({ isdbgrid : 1});
{ "isdbgrid" : 1, "hostname" : "rac4", "ok" : 1 }
mongos> db.runCommand({ismaster:1});
{
        "ismaster" : true,
        "msg" : "isdbgrid",
        "maxBsonObjectSize" : 16777216,
        "ok" : 1
2 查看已经存在的shard集群:必须在admin数据库上
mongos> db.runCommand({ listShards : 1});
{ "ok" : 0, "errmsg" : "access denied - use admin db" }
mongos> use admin
switched to db admin
mongos> db.runCommand({ listShards : 1});
{
        "shards" : [
                {
                        "_id" : "shard0000",
                        "host" : "10.250.7.225:27018"
                },
                {
                        "_id" : "shard0001",
                        "host" : "10.250.7.249:27019"
                },
                {
                        "_id" : "shard0002",
                        "host" : "10.250.7.241:27020"
                }
        ],
        "ok" : 1
}
3 查看一个数据库是否进行了shard
mongos> config = db.getSisterDB("config")
config
mongos> config.system.namespaces.find()
{ "name" : "config.version" }
{ "name" : "config.system.indexes" }
{ "name" : "config.version.$_id_" }
{ "name" : "config.settings" }
{ "name" : "config.settings.$_id_" }
{ "name" : "config.chunks" }
{ "name" : "config.chunks.$_id_" }
{ "name" : "config.chunks.$ns_1_min_1" }
{ "name" : "config.chunks.$ns_1_shard_1_min_1" }
{ "name" : "config.chunks.$ns_1_lastmod_1" }
{ "name" : "config.shards" }
{ "name" : "config.shards.$_id_" }
{ "name" : "config.shards.$host_1" }
{ "name" : "config.mongos" }
{ "name" : "config.mongos.$_id_" }
{ "name" : "config.lockpings" }
{ "name" : "config.lockpings.$_id_" }
{ "name" : "config.locks" }
{ "name" : "config.locks.$_id_" }
{ "name" : "config.lockpings.$ping_1" }
has more
mongos> it
{ "name" : "config.databases" }
{ "name" : "config.databases.$_id_" }
{ "name" : "config.collections" }
{ "name" : "config.collections.$_id_" }
{ "name" : "config.changelog", "options" : { "create" : "changelog", "size" : NumberLong(10485760), "capped" : true } }
查看test数据库,进行了拆分
mongos> test = db.getSisterDB("test")
test
mongos> test.system.namespaces.find()
{ "name" : "test.system.indexes" }
{ "name" : "test.yql" }
{ "name" : "test.yql.$_id_" }
mongos数据库没有进行拆分
mongos> mongos = db.getSisterDB("mongos")
mongos
mongos> mongos.system.namespaces.find()

4 查看整个mongodb 数据库shard的详细信息 
db.printShardingStatus();
 这个命令已经不陌生了,对于此命令的输出:
mongos> printShardingStatus();
--- Sharding Status --- 
第一部分:
  sharding version: { "_id" : 1, "version" : 3 }
第二部分:
  shards:
        {  "_id" : "shard0000",  "host" : "10.250.7.225:27018" }
        {  "_id" : "shard0001",  "host" : "10.250.7.249:27019" }
        {  "_id" : "shard0002",  "host" : "10.250.7.241:27020" }
 介绍了整个sharding 集群的名称,和分布的服务器的ip和端口号。
第三部分:
所有在这个集群上的数据库。
_id 数据库的名字
partitioned 表示是否进行shard 值为true或false,数据库admin没有进行shard,在config服务器上
primary:表示基片,test库有三个shard:shard0000,shard0001,shard0002,其基片为shard0000 表示test数据库在shard000
test.yql chunks:表示collection的分片信息,分为几个区间,哪一个区间在哪一个shard上面。
  databases:
        {  "_id" : "admin",  "partitioned" : false,  "primary" : "config" }
        {  "_id" : "mongos",  "partitioned" : false,  "primary" : "shard0000" }
        {  "_id" : "test",   "partitioned" : true,   "primary" : "shard0000" }
                test.yql chunks:
                                shard0000       2
                                shard0002       1
                                shard0001       1
                        { "_id" : { $minKey : 1 } } -->> { "_id" : ObjectId("4eb298b3adbd9673afee95e3") } on : shard0000 { "t" : 2000, "i" : 1 }
                        { "_id" : ObjectId("4eb298b3adbd9673afee95e3") } -->> { "_id" : ObjectId("4eb2a64640643e5bb60072f7") } on : shard0000 { "t" : 1000, "i" : 3 }
                        { "_id" : ObjectId("4eb2a64640643e5bb60072f7") } -->> { "_id" : ObjectId("4eb2a65340643e5bb600e084") } on : shard0002 { "t" : 3000, "i" : 1 }
                        { "_id" : ObjectId("4eb2a65340643e5bb600e084") } -->> { "_id" : { $maxKey : 1 } } on : shard0001 { "t" : 3000, "i" : 0 }
相关实践学习
MongoDB数据库入门
MongoDB数据库入门实验。
快速掌握 MongoDB 数据库
本课程主要讲解MongoDB数据库的基本知识,包括MongoDB数据库的安装、配置、服务的启动、数据的CRUD操作函数使用、MongoDB索引的使用(唯一索引、地理索引、过期索引、全文索引等)、MapReduce操作实现、用户管理、Java对MongoDB的操作支持(基于2.x驱动与3.x驱动的完全讲解)。 通过学习此课程,读者将具备MongoDB数据库的开发能力,并且能够使用MongoDB进行项目开发。   相关的阿里云产品:云数据库 MongoDB版 云数据库MongoDB版支持ReplicaSet和Sharding两种部署架构,具备安全审计,时间点备份等多项企业能力。在互联网、物联网、游戏、金融等领域被广泛采用。 云数据库MongoDB版(ApsaraDB for MongoDB)完全兼容MongoDB协议,基于飞天分布式系统和高可靠存储引擎,提供多节点高可用架构、弹性扩容、容灾、备份回滚、性能优化等解决方案。 产品详情: https://www.aliyun.com/product/mongodb
相关文章
|
存储 域名解析 监控
『MongoDB』MongoDB高可用部署架构——分片集群篇(Sharding)
📣读完这篇文章里你能收获到 - 为什么要使用分片 - Mongodb分片集群有哪些特点 - Mongodb分片集群的完整架构 - Mongodb分片集群数据分布方式 - Mongodb分片集群的设计思路 - Mongodb分片集群搭建及扩容 - 这篇文章强烈建议收藏!!!免得下次找不到
3068 2
『MongoDB』MongoDB高可用部署架构——分片集群篇(Sharding)
|
8月前
|
缓存 NoSQL Java
Spring Session MongoDB管理会话
Spring Session MongoDB管理会话
63 0
|
9月前
|
存储 NoSQL 分布式数据库
MongoDB性能系列最佳实践-Sharding
MongoDB将会推出一系列介绍MongoDB性能最佳实践的文章,旨在帮助用户在多个关键方面实现规模化性能优化。
MongoDB性能系列最佳实践-Sharding
|
10月前
|
NoSQL MongoDB 数据库
mongodb用户权限管理
用户权限管理简要说明
631 0
|
NoSQL MongoDB 数据库
分布式服务器框架之Server.Core库中实现YFUniqueEntity、YFUniqueIDBase 管理MongoDB 自定义Id的自增
YFUniqueEntity是数据库中的结构,GetUniqueID函数中会根据Type和自增步长去数据库中寻找该类型的当前ID是多少,然后会用当前的Id去加上步长,把更新后的新ID插入到MongoDB中记录着ID的那张表里。
|
SQL NoSQL MongoDB
分布式服务器框架之Servers.Core库中实现MongoDB对象实体类 管理对象ID
MongoDB中的ID是一个hash码,和传统的关系数据库相比MongoDB没有办法实现ID的自增,如果需要ID自增的话,所以要自己管理ID,并且把对应类型的ID写入到一个专门的Collection(其实就是Sql中的Table)里面去,每次创建新对象的时候,都要取到该类型当前的ID,然后在这个基础上+1,比如当前是角色的ID是1,又创建了一个新的角色,要在原来的基础上+1 ID=2。今天先把MongoDB的对象实体基类实现了。
|
NoSQL MongoDB 数据库
MongoDB 用户角色管理
MongoDB 服务默认是没有账号密码的,客户端连接上即可进行各种操作。如果在配置文件中,指定了auth=true,即开启了认证,那么客户端连接后需要认证才能执行操作。
MongoDB 用户角色管理
|
存储 JSON NoSQL
4.0版本以上mongodb在Windows下载安装-添加Windows服务-安装可视化工具管理数据教程
4.0版本以上mongodb在Windows下载安装-添加Windows服务-安装可视化工具管理数据教程
162 0
4.0版本以上mongodb在Windows下载安装-添加Windows服务-安装可视化工具管理数据教程
|
NoSQL MongoDB
MongoDB Sharding 请勿复用已删除的 namespace
SERVER-17397: Dropping a Database or Collection in a Sharded Cluster may not fully succeed 是 MongoDB 里老大难的问题,库或集合删除操作如果没有完全执行成功,再新建相同名字的集合,可能导致读到老版本数据的问题。
|
NoSQL MongoDB
MongoDB sharding 集合不分片性能更高?
最近云上用户用户遇到一个 sharding 集群性能问题的疑惑,比较有代表性,简单分享一下 测试配置 mongos x 2、shard x 3 测试1:集合不开启分片,批量 insert 导入数据,每个 batch 100 个文档 测试2:集合开启分片,随机生成 shardKey,chunk 已...