mongo 集群的配置信息

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/wll_1017/article/details/82699225

连接路由节点 

mongos> show databases;
admin     0.000GB
config    0.326GB
csms    122.412GB

切换到config 数据库,里面是我们mongo的配置信息
mongos> use config
mongos> show tables;
actionlog
changelog
chunks
collections
databases
lockpings
locks
migrations
mongos
settings
shards
tags
transactions
version


1、config.shard 记录了集群的所有分片信息
mongos> db.shards.find()
{ "_id" : "set1", "host" : "set1/172.17.17.70:27056,172.17.17.71:27057", "state" : 1, "tags" : [ "tag1", "province_a" ] }
{ "_id" : "set2", "host" : "set2/172.17.17.71:27056,172.17.17.72:27057", "state" : 1, "tags" : [ "tag2", "province_b" ] }
{ "_id" : "set3", "host" : "set3/172.17.17.70:27057,172.17.17.72:27056", "state" : 1, "tags" : [ "tag3", "province_c" ] }

_id 来自于副本集的名称,所以集群中的每个副本集名称都必须是唯一的。

2、config.database 记录集群中所有数据库的信息,不管数据库分片没有分片
mongos> db.databases.find()
{ "_id" : "csms", "primary" : "set3", "partitioned" : true }

如果数据库分片,则partitioned=true,primary 是主数据库,数据库的所有新集合均默认被创建在数据库的主分片上

3、config.collection 

mongos> db.collections.findOne()
{
        "_id" : "csms.recordFollowEwb",
        "lastmodEpoch" : ObjectId("5ae960dc3f56cf5dcfeed63d"),
        "lastmod" : ISODate("1970-02-19T17:02:47.298Z"),
        "dropped" : false,
        "key" : {
                "ewbNo" : "hashed"
        },
        "unique" : false,
        "uuid" : UUID("cc9a11fa-f177-4c07-a94d-4410f3712cd9")
}
_id:集合命名空间
lastmodEpoch:
dropped:是否已经被删除
lastmod:
unique:片键是否是唯一索引。该字段只有当值为true才会出现,片键默认是不唯一的。
key:片键


4、config.chunk 记录集合中所有块的信息
mongos> db.chunks.find().pretty()
{
        "_id" : "csms.test-skey_\"003\"ct_MinKey",
        "lastmod" : Timestamp(33, 204),
        "lastmodEpoch" : ObjectId("5ae9671e3f56cf5dcfef32e6"),
        "ns" : "csms.test",
        "min" : {
                "skey" : "003",
                "ct" : { "$minKey" : 1 }
        },
        "max" : {
                "skey" : "003",
                "ct" : ISODate("2018-05-07T09:53:26.348Z")
        },
        "shard" : "set1"
}
_id:块的唯一标识符
ns:块所属的集合名词
min:块范围的最小值
max:块范围的最大值
shard:所属分片
lastmod 和lastmodEpoch 用于记录块版本,当一个块被拆分成两块,为了区分该块与之前的块。因此我们用t和i字段表示块的主(major)版本和副版本(minor)
主版本在块迁移至新的分片时候发生改变,副版本在块被拆分时候发生改变


5、config.chanagelog 用于跟踪记录集群的操作,该集合会记录所有的拆分和迁移操作
{
        "_id" : "pmongokdgd04-2018-07-12T14:01:56.201+0800-5b46eed4747b3ed757d4ed29",
        "server" : "pmongokdgd04",
        "clientAddr" : "172.17.17.72:41423",
        "time" : ISODate("2018-07-12T06:01:56.201Z"),
        "what" : "multi-split",
        "ns" : "csms.test",
        "details" : {
                "before" : {
                        "min" : {
                                "skey" : "028",
                                "ct" : ISODate("2018-07-10T11:17:10.846Z")
                        },
                        "max" : {
                                "skey" : "028",
                                "ct" : { "$maxKey" : 1 }
                        },
                        "lastmod" : Timestamp(33, 2537),
                        "lastmodEpoch" : ObjectId("5ae9671e3f56cf5dcfef32e6")
                },
                "number" : 1,
                "of" : 3,
                "chunk" : {
                        "min" : {
                                "skey" : "028",
                                "ct" : ISODate("2018-07-10T11:17:10.846Z")
                        },
                        "max" : {
                                "skey" : "028",
                                "ct" : ISODate("2018-07-11T07:29:06.892Z")
                        },
                        "lastmod" : Timestamp(33, 2538),
                        "lastmodEpoch" : ObjectId("5ae9671e3f56cf5dcfef32e6")
                }
        }
}
{
        "_id" : "pmongokdgd04-2018-07-12T14:01:56.202+0800-5b46eed4747b3ed757d4ed2b",
        "server" : "pmongokdgd04",
        "clientAddr" : "172.17.17.72:41423",
        "time" : ISODate("2018-07-12T06:01:56.202Z"),
        "what" : "multi-split",
        "ns" : "csms.test",
        "details" : {
                "before" : {
                        "min" : {
                                "skey" : "028",
                                "ct" : ISODate("2018-07-10T11:17:10.846Z")
                        },
                        "max" : {
                                "skey" : "028",
                                "ct" : { "$maxKey" : 1 }
                        },
                        "lastmod" : Timestamp(33, 2537),
                        "lastmodEpoch" : ObjectId("5ae9671e3f56cf5dcfef32e6")
                },
                "number" : 2,
                "of" : 3,
                "chunk" : {
                        "min" : {
                                "skey" : "028",
                                "ct" : ISODate("2018-07-11T07:29:06.892Z")
                        },
                        "max" : {
                                "skey" : "028",
                                "ct" : ISODate("2018-07-12T05:15:15.251Z")
                        },
                        "lastmod" : Timestamp(33, 2539),
                        "lastmodEpoch" : ObjectId("5ae9671e3f56cf5dcfef32e6")
                }
        }
}
{
        "_id" : "pmongokdgd04-2018-07-12T14:01:56.202+0800-5b46eed4747b3ed757d4ed2d",
        "server" : "pmongokdgd04",
        "clientAddr" : "172.17.17.72:41423",
        "time" : ISODate("2018-07-12T06:01:56.202Z"),
        "what" : "multi-split",
        "ns" : "csms.test",
        "details" : {
                "before" : {
                        "min" : {
                                "skey" : "028",
                                "ct" : ISODate("2018-07-10T11:17:10.846Z")
                        },
                        "max" : {
                                "skey" : "028",
                                "ct" : { "$maxKey" : 1 }
                        },
                        "lastmod" : Timestamp(33, 2537),
                        "lastmodEpoch" : ObjectId("5ae9671e3f56cf5dcfef32e6")
                },
                "number" : 3,
                "of" : 3,
                "chunk" : {
                        "min" : {
                                "skey" : "028",
                                "ct" : ISODate("2018-07-12T05:15:15.251Z")
                        },
                        "max" : {
                                "skey" : "028",
                                "ct" : { "$maxKey" : 1 }
                        },
                        "lastmod" : Timestamp(33, 2540),
                        "lastmodEpoch" : ObjectId("5ae9671e3f56cf5dcfef32e6")
                }
        }
}


  "what" : "multi-split" :通过这里我们可以看到做的是chunk拆分
  "number" : 1,"of" : 3, 说明chunk被拆分成了3分,当前是3分的第一分
 before:chunk的拆分前范围是 {028, ISODate("2018-07-10T11:17:10.846Z")} {028, "$maxKey"}
 "chunk" : chunk 拆分后,每个分片的范围
 {028,ISODate("2018-07-10T11:17:10.846Z")} {028,ISODate("2018-07-11T07:29:06.892Z")}
 {028,ISODate("2018-07-11T07:29:06.892Z")}{028,ISODate("2018-07-12T05:15:15.251Z"}
 {028,ISODate("2018-07-12T05:15:15.251Z")} {028, "$maxKey"}
 
  "lastmod" : Timestamp(33, 2540) 被拆分后,一直在增长
  
  
  
 {
        "_id" : "pmongokdgd04-2018-07-12T03:47:11.699+0800-5b465ebf1b51b632a41160c6",
        "server" : "pmongokdgd04",
        "clientAddr" : "172.17.17.70:48424",
        "time" : ISODate("2018-07-11T19:47:11.699Z"),
        "what" : "moveChunk.from",
        "ns" : "config.system.sessions",
        "details" : {
                "min" : {
                        "_id" : {
                                "id" : UUID("00001a80-0486-4236-a48a-9abd420cd1d8"),
                                "uid" : BinData(0,"IfpXJILbfH9Uxq0b3Xecr8MkNNtCf6HnCwqV83gL0UU=")
                        }
                },
                "max" : {
                        "_id" : {
                                "id" : UUID("14ef8128-805c-425d-954e-27478d30274d"),
                                "uid" : BinData(0,"IfpXJILbfH9Uxq0b3Xecr8MkNNtCf6HnCwqV83gL0UU=")
                        }
                },
                "step 1 of 6" : 0,
                "step 2 of 6" : 2,
                "step 3 of 6" : 202,
                "to" : "set2",
                "from" : "set1",
                "note" : "aborted"
        }

"what" : 有两种形式  "moveChunk.from" 和 "moveChunk.to"
"step 1 of N:以毫秒为单位,显示了步骤的耗时长短

当from 分片收到mongos发来的movechunk命令时会
(1)检查命令参数
(2)向配置服务器申请获得一个分布锁,以便进入迁移过程
(3)尝试连接到to的分片 
(4)数据复制,这整个过程的临界区
(5)与to分片和配置服务器一起确认迁移是否完成

to 和from 分片间进行的是直接通信:每个分片都是直接连接到另外一个分片和配置服务器上,以进行迁移。
如果from 分片在迁移过程的最后一步出现短暂的网络连接问题,它可能会处于无法撤销迁移操作,也无法仅需进行下去的状态
这种情况下,mongod会关闭。

当to 分片收到from 分片发来的命令时,会执行如下操作
(1)迁移索引。如果该分片不包含任何来自迁移集合的块,则需知道有哪些字段上建立过索引。如果再此之前to分片已有来自于该集合的块,则可忽略此步骤
(2)删除块范围内已存在的任何数据。之前失败迁移,可能会留有数据残余,或者是正处于恢复过程当中,此时我们不希望残留数据与新数据混杂在一起
(3)将块中的所有文档复制到to 分片
(4)复制期间,在to分片上重新执行曾在这些文档上执行过的操作
(5)等待to分片将新迁移过来的数据复制到集群的大多数服务器上
(6)修改块的原数据,以完成迁移过程,表明数据已经被成功迁移到to分片上。


6、config.tags 标签

{
        "_id" : {
                "ns" : "csms.test",
                "min" : {
                        "skey" : "012",
                        "ct" : { "$minKey" : 1 }
                }
        },
        "ns" : "csms.test",
        "min" : {
                "skey" : "012",
                "ct" : { "$minKey" : 1 }
        },
        "max" : {
                "skey" : "012",
                "ct" : { "$maxKey" : 1 }
        },
        "tag" : "province_a"
}   

7、config.settings  均衡器设置和块大小的文档信息
mongos> db.settings.find()  
{ "_id" : "balancer", "mode" : "off", "stopped" : true }

猜你喜欢

转载自blog.csdn.net/wll_1017/article/details/82699225
今日推荐