介绍
小编给大家分享一下MongoDB主分片(主碎片)指的是什么,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获、下面让我们一起去了解一下吧!
01主分片是什么?
,分片集群中的每一个数据库都有一个主分片,这个主分片上保存了当前数据库中没有被分片的集合的数据,主分片(主碎片)和主节点(初级)之间没有任何关联。
,,主分片是由蒙戈选择出来的,选择的依据是每当创建新数据库的时候,蒙戈会从集群中选择包含数据最少的分片作为新数据库的主分片。具体的选择方式是:
选择listDatabase命令返回的totalSize字段作为选择的准则。如下:
mongos>, db.adminCommand (“listDatabases") { “databases"才能,:, ,,,{ ,,,,xxxx ,,,}, ,,,{ ,,,,xxxx ,,,}, ,,,{ ,,,,xxxx ,,,} ,,, “才能totalSize",:, 2842624, “才能totalSizeMb",,, 2, “才能ok",:, 1, “才能operationTime",:,时间戳(1610982469,,1), “clusterTime"美元;才能,:,{ ,,,“clusterTime",:,时间戳(1610982469,,1), ,,,“signature",:, { ,,,,,“hash",:, BinData (0,“knqdZrxpyGFdSi0gljxCQG4LJ9U=?, ,,,,,“keyId",:, NumberLong (“6894922308364795934”) ,,,} ,,} }
,,如果我们想手工的选择某个数据库的主分片,可以使用movePrimary命令,迁移主分片的过程会耗费一定的时间,在迁移完成之前,不应该对数据库或者对应的集合进行访问。迁移过程可能会影响整个集群的操作,所以这个命令一般不要主动去使用,如果必须使用,请务必考虑对网络负载的影响。
,,如果你部署的一个分片集群是由一个副本集修改配置而来的,那么副本集上原来的那些数据库的主分片将会继续留在原来的副本集上,之后创建的数据库才可以将主分片设置在其他分片上。
02如何迁移主分片
,,下面我们演示如何使用movePrimary命令来迁移数据库的主分片。
首先,我们来看,当前新数据库的测试集合的主分片在sharding_yeyz这个分片上。它就是新的。测试的主分片,如下:
mongos>, sh.status () ——安康;Sharding Status ——安康; ,碎片: {才能,“_id",:,“sharding_yeyz",,“host",:,“sharding_yeyz/127.0.0.1:27018 127.0.0.1:27019, 127.0.0.1:27020",,“state",,, 1,,“tags",:,“,“1 _1000",],} {才能,“_id",:,“sharding_yeyz1",,“host",:,“sharding_yeyz1/127.0.0.1:27024, 127.0.0.1:27025, 127.0.0.1:27026",,“state",,, 1,,“tags",:,“,“1000 _",,“1000 _2000",],} , ,数据库: ,,… {才能,“_id",:,“new",,“primary",:,“sharding_yeyz",,“partitioned",,,真的,,“version",,, {,“uuid",:, UUID (“68 c70c64 f732 - 4478 - 8851 - 06 - dad4b94d6b"),,“lastMod",:, 1,},} ,,new.test ,,,,,shard 关键:,{,“number",:, 1,} ,,,,,独特:假 ,,,,,平衡:真实 ,,,,,块: ,,,,,,sharding_yeyz 3 ,,,,,,,sharding_yeyz1 1 ,,,,,{,“number",:, {,“minKey"美元,:,1,},},——在祝辞,{,“number",:, 1,},提醒:,sharding_yeyz 时间戳(2,1), ,,,,,{,“number",:, 1,},——在祝辞,{,“number",:, 1000,},提醒:,sharding_yeyz 时间戳(1,2), ,,,,,{,“number",:, 1000,},——在祝辞,{,“number",:, 2000,},提醒:,sharding_yeyz1 时间戳(2,0), ,,,,,{,“number",:, 2000,},——在祝辞,{,“number",:, {,“maxKey"美元,:,1,},},提醒:,sharding_yeyz 时间戳(1,5), ,,,,,,标签:,1 _1000 {,“number",:, 1,},——在祝辞,{,“number",:, 1000,} null null null null null null null null null null null null null null null null null null null null null null null nullMongoDB主分片(主碎片)指的是什么