走运的鹪 發表於 2019-7-17 20:42:00

MongoDB 分片的原理、搭建、应用 (转)

<p><span style="font-size: 16px"><strong>一、概念:</strong></span></p>
<p>&nbsp; <span style="font-size: 14px">&nbsp; &nbsp;&nbsp;分片(sharding)是指将数据库拆分,将其分散在不同的机器上的过程。将数据分散到不同的机器上,不需要功能强大的服务器就可以存储更多的数据和处理更大的负载。<span style="font-size: 14px"><span style="color: rgba(255, 0, 0, 1)"><strong>基本思想</strong>就是将集合切成小块,这些块分散到若干片里,每个片只负责总数据的一部分,最后通过一个均衡器来对各个分片进行均衡(数据迁移)。通过一个名为mongos的路由进程进行操作,mongos知道数据和片的对应关系(通过配置服务器)。大部分使用场景都是解决磁盘空间的问题,对于写入有可能会变差(+++里面的说明+++),查询则尽量避免跨分片查询。使用分片的时机:</span></span></span></p>
<div class="cnblogs_code">
<pre><span style="font-size: 13px"><span style="color: rgba(128, 0, 128, 1)">1<span style="color: rgba(0, 0, 0, 1)">,机器的磁盘不够用了。使用分片解决磁盘空间的问题。
<span style="color: rgba(128, 0, 128, 1)">2<span style="color: rgba(0, 0, 0, 1)">,单个mongod已经不能满足写数据的性能要求。通过分片让写压力分散到各个分片上面,使用分片服务器自身的资源。
<span style="color: rgba(128, 0, 128, 1)">3,想把大量数据放到内存里提高性能。和上面一样,通过分片使用分片服务器自身的资源。</span></span></span></span></span></span></pre>
</div>
<p><span style="font-size: 15px"><span style="font-size: 16px"><strong><span style="color: rgba(0, 0, 0, 1)">二、部署安装: </span></strong>前提是安装了mongodb(本文用3.0测试)</span></span></p>
<p><span style="font-size: 14px">在搭建分片之前,先了解下分片中<span style="color: rgba(255, 0, 0, 1)">各个角色的作用。</span></span></p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 0, 1); font-size: 13px"><strong>① 配置服务器。</strong>是一个独立的mongod进程,保存集群和分片的元数据,即各分片包含了哪些数据的信息。最先开始建立,启用日志功能。像启动普通的mongod一样启动配置服务器,指定<strong>configsvr</strong>选项。不需要太多的空间和资源,配置服务器的1KB空间相当于真是数据的200MB。保存的只是数据的分布表。当服务不可用,则变成只读,无法分块、迁移数据。
<strong>② 路由服务器</strong>。即mongos,起到一个路由的功能,供程序连接。本身不保存数据,在启动时从配置服务器加载集群信息,开启mongos进程需要知道配置服务器的地址,指定<strong>configdb</strong>选项。
<strong>③ 分片服务器</strong>。是一个独立普通的mongod进程,保存数据信息。可以是一个副本集也可以是单独的一台服务器。</span></pre>
</div>
<p><span style="font-size: 14px"><strong>部署环境:</strong>3台机子</span></p>
<p><span style="font-size: 14px">A:配置(3)、路由1、分片1;</span></p>
<p><span style="font-size: 14px">B:分片2,路由2;</span></p>
<p><span style="font-size: 14px">C:分片3</span></p>
<p>&nbsp; &nbsp; &nbsp; <span style="font-size: 14px">在部署之前先明白<strong>片键</strong>的意义,一个好的片键对分片至关重要。<strong>片键必须是一个索引</strong>,数据根据这个片键进行拆分分散。通过sh.shardCollection加会自动创建索引。一个自增的片键对写入和数据均匀分布就不是很好,因为自增的片键总会在一个分片上写入,后续达到某个阀值可能会写到别的分片。但是按照片键查询会非常高效。随机片键对数据的均匀分布效果很好。注意尽量避免在多个分片上进行查询。在所有分片上查询,mongos会对结果进行归并排序。</span></p>
<p><span style="font-size: 14px">启动上面这些服务,因为在后台运行,所以用配置文件启动,配置文件说明。</span></p>
<p><span style="font-size: 14px"><strong>1)</strong>配置服务器的启动。(A上开启3个,Port:20000、21000、22000)&nbsp;</span></p>
<p><span style="font-size: 14px">配置服务器是一个普通的mongod进程,所以只需要新开一个实例即可。<strong>配置服务器必须开启1个或则3个,开启2个则会报错</strong>:<br></span></p>
<div class="cnblogs_code">
<pre>BadValue need either <span style="color: rgba(128, 0, 128, 1)">1 or <span style="color: rgba(128, 0, 128, 1)">3 configdbs</span></span></pre>
</div>
<p><span style="font-size: 14px"><span style="line-height: 1.5">因为要放到后台用用配置文件启动,需要修改配置文件:<span style="line-height: 1.5"><br></span></span></span></p>
<p><span style="line-height: 1.5; font-size: 14px">/etc/mongod_20000.conf</span></p>
<div class="cnblogs_code">
<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy"><img src="https://common.cnblogs.com/images/copycode.gif" alt="复制代码"></span></div>
<pre><span style="color: rgba(0, 0, 0, 1)">#数据目录
dbpath=/usr/local/config/<span style="color: rgba(0, 0, 0, 1)">
#日志文件
logpath=/var/log/mongodb/<span style="color: rgba(0, 0, 0, 1)">mongodb_config.log
#日志追加
logappend=<span style="color: rgba(0, 0, 255, 1)">true<span style="color: rgba(0, 0, 0, 1)">
#端口
port = <span style="color: rgba(128, 0, 128, 1)">20000<span style="color: rgba(0, 0, 0, 1)">
#最大连接数
maxConns = <span style="color: rgba(128, 0, 128, 1)">50<span style="color: rgba(0, 0, 0, 1)">
pidfilepath = /var/run/<span style="color: rgba(0, 0, 0, 1)">mongo_20000.pid
#日志,redo log
journal = <span style="color: rgba(0, 0, 255, 1)">true<span style="color: rgba(0, 0, 0, 1)">
#刷写提交机制
journalCommitInterval = <span style="color: rgba(128, 0, 128, 1)">200<span style="color: rgba(0, 0, 0, 1)">
#守护进程模式
fork = <span style="color: rgba(0, 0, 255, 1)">true<span style="color: rgba(0, 0, 0, 1)">
#刷写数据到日志的频率
syncdelay = <span style="color: rgba(128, 0, 128, 1)">60<span style="color: rgba(0, 0, 0, 1)">
#storageEngine =<span style="color: rgba(0, 0, 0, 1)"> wiredTiger
#操作日志,单位M
oplogSize = <span style="color: rgba(128, 0, 128, 1)">1000<span style="color: rgba(0, 0, 0, 1)">
#命名空间的文件大小,默认16M,最大2G。
nssize = <span style="color: rgba(128, 0, 128, 1)">16<span style="color: rgba(0, 0, 0, 1)">
noauth = <span style="color: rgba(0, 0, 255, 1)">true<span style="color: rgba(0, 0, 0, 1)">
unixSocketPrefix = /<span style="color: rgba(0, 0, 0, 1)">tmp
<strong><span style="color: rgba(255, 0, 0, 1)">configsvr </span></strong><strong><span style="color: rgba(255, 0, 0, 1)">= true</span></strong></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></pre>
<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy"><img src="https://common.cnblogs.com/images/copycode.gif" alt="复制代码"></span></div>
</div>
<p><span style="font-size: 14px">/etc/mongod_21000.conf</span></p>
<div class="cnblogs_code">
<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy"><img src="https://common.cnblogs.com/images/copycode.gif" alt="复制代码"></span></div>
<pre><span style="color: rgba(0, 0, 0, 1)">数据目录
dbpath=/usr/local/config1/<span style="color: rgba(0, 0, 0, 1)">
#日志文件
logpath=/var/log/mongodb/<span style="color: rgba(0, 0, 0, 1)">mongodb_config1.log
#日志追加
logappend=<span style="color: rgba(0, 0, 255, 1)">true<span style="color: rgba(0, 0, 0, 1)">
#端口
port = <span style="color: rgba(128, 0, 128, 1)">21000<span style="color: rgba(0, 0, 0, 1)">
#最大连接数
maxConns = <span style="color: rgba(128, 0, 128, 1)">50<span style="color: rgba(0, 0, 0, 1)">
pidfilepath = /var/run/<span style="color: rgba(0, 0, 0, 1)">mongo_21000.pid
#日志,redo log
journal = <span style="color: rgba(0, 0, 255, 1)">true<span style="color: rgba(0, 0, 0, 1)">
#刷写提交机制
journalCommitInterval = <span style="color: rgba(128, 0, 128, 1)">200<span style="color: rgba(0, 0, 0, 1)">
#守护进程模式
fork = <span style="color: rgba(0, 0, 255, 1)">true<span style="color: rgba(0, 0, 0, 1)">
#刷写数据到日志的频率
syncdelay = <span style="color: rgba(128, 0, 128, 1)">60<span style="color: rgba(0, 0, 0, 1)">
#storageEngine =<span style="color: rgba(0, 0, 0, 1)"> wiredTiger
#操作日志,单位M
oplogSize = <span style="color: rgba(128, 0, 128, 1)">1000<span style="color: rgba(0, 0, 0, 1)">
#命名空间的文件大小,默认16M,最大2G。
nssize = <span style="color: rgba(128, 0, 128, 1)">16<span style="color: rgba(0, 0, 0, 1)">
noauth = <span style="color: rgba(0, 0, 255, 1)">true<span style="color: rgba(0, 0, 0, 1)">
unixSocketPrefix = /<span style="color: rgba(0, 0, 0, 1)">tmp
<span style="color: rgba(255, 0, 0, 1)"><strong>configsvr </strong><span style="color: rgba(255, 0, 0, 1)"><strong>= true</strong></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></pre>
<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy"><img src="https://common.cnblogs.com/images/copycode.gif" alt="复制代码"></span></div>
</div>
<p><span style="font-size: 14px">开启配置服务器:</span></p>
<div class="cnblogs_code">
<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy"><img src="https://common.cnblogs.com/images/copycode.gif" alt="复制代码"></span></div>
<pre>root@mongo1:~# mongod -f /etc/<span style="color: rgba(0, 0, 0, 1)">mongod_20000.conf
about to fork child process, waiting <span style="color: rgba(0, 0, 255, 1)">until server is ready <span style="color: rgba(0, 0, 255, 1)">for<span style="color: rgba(0, 0, 0, 1)"> connections.
forked process: <span style="color: rgba(128, 0, 128, 1)">8545<span style="color: rgba(0, 0, 0, 1)">
child process started successfully, parent exiting

root@mongo1:~# mongod -f /etc/<span style="color: rgba(0, 0, 0, 1)">mongod_21000.conf
about to fork child process, waiting <span style="color: rgba(0, 0, 255, 1)">until server is ready <span style="color: rgba(0, 0, 255, 1)">for<span style="color: rgba(0, 0, 0, 1)"> connections.
forked process: <span style="color: rgba(128, 0, 128, 1)">8595<span style="color: rgba(0, 0, 0, 1)">
child process started successfully, parent exiting</span></span></span></span></span></span></span></span></span></span></span></span></pre>
<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy"><img src="https://common.cnblogs.com/images/copycode.gif" alt="复制代码"></span></div>
</div>
<p><span style="font-size: 14px">同理再起一个22000端口的配置服务器。</span></p>
<div class="cnblogs_code"><img id="code_img_closed_04ba755d-c6e5-447d-b3f7-1a3658762e4d" class="code_img_closed" style="display: inline" src="https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif" alt=""> <span class="cnblogs_code_collapse" style="display: inline">View Code</span></div>
<p><strong>2)</strong>路由服务器的启动。(A、B上各开启1个,Port:30000)</p>
<p><span style="font-size: 14px">路由服务器不保存数据,把日志记录一下即可。</span></p>
<div class="cnblogs_code">
<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy"><img src="https://common.cnblogs.com/images/copycode.gif" alt="复制代码"></span></div>
<pre><span style="color: rgba(0, 0, 0, 1)"># mongos

#日志文件
<strong>logpath</strong>=/var/log/mongodb/<span style="color: rgba(0, 0, 0, 1)">mongodb_route.log
#日志追加
logappend=<span style="color: rgba(0, 0, 255, 1)">true<span style="color: rgba(0, 0, 0, 1)">
#端口
port = <span style="color: rgba(128, 0, 128, 1)">30000<span style="color: rgba(0, 0, 0, 1)">
#最大连接数
maxConns = <span style="color: rgba(128, 0, 128, 1)">100<span style="color: rgba(0, 0, 0, 1)">
#绑定地址
#bind_ip=<span style="color: rgba(128, 0, 128, 1)">192.168.<span style="color: rgba(128, 0, 128, 1)">200.*<span style="color: rgba(0, 0, 0, 1)">,...,

pidfilepath = /var/run/<span style="color: rgba(0, 0, 0, 1)">mongo_30000.pid

<strong><span style="color: rgba(255, 0, 0, 1)">configdb</span></strong><strong>=<span style="color: rgba(128, 0, 128, 1)">192.168.<span style="color: rgba(128, 0, 128, 1)">200.A:<span style="color: rgba(128, 0, 128, 1)">20000,<span style="color: rgba(128, 0, 128, 1)">192.168.<span style="color: rgba(128, 0, 128, 1)">200.A:<span style="color: rgba(128, 0, 128, 1)">21000,192.168.200.A:22000#必须是1个或则3个配置 。</span></span></span></span></span></span></strong></span></span></span></span></span></span></span></span></span></span></span></span></pre>
<pre>#configdb=<span style="color: rgba(128, 0, 128, 1)">127.0.<span style="color: rgba(128, 0, 128, 1)">0.1:<span style="color: rgba(128, 0, 128, 1)">20000#报错</span></span></span></pre>
<pre><span style="color: rgba(0, 0, 0, 1)">#守护进程模式 fork = <span style="color: rgba(0, 0, 255, 1)">true</span></span></pre>
<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy"><img src="https://common.cnblogs.com/images/copycode.gif" alt="复制代码"></span></div>
</div>
<p><span style="font-size: 14px">其中最重要的参数是<strong><span style="font-size: 14px">configdb,不能在其后面带的配置服务器的地址写成localhost或则127.0.0.1,需要设置成其他分片也能访问的地址,即192.168.200.A:20000/21000/22000。否则在addshard的时候会报错:<br></span></strong></span></p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 0, 1)">{
<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">ok<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 128, 1)">0<span style="color: rgba(0, 0, 0, 1)">,
<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">errmsg<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)"><strong>can't use localhost as a shard</strong> since all shards need to communicate. either use all shards and configdbs in localhost or all in actual IPshost: 172.16.5.104:20000 isLocalHost:0<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(0, 0, 0, 1)">
}</span></span></span></span></span></span></span></span></span></span></span></span></span></pre>
</div>
<p><span style="font-size: 14px">开启mongos:</span></p>
<div class="cnblogs_code">
<pre>root@mongo1:~# <strong>mongos</strong> -f /etc/<span style="color: rgba(0, 0, 0, 1)">mongod_30000.conf
<span style="color: rgba(128, 0, 128, 1)">2015-<span style="color: rgba(128, 0, 128, 1)">07-10T14:<span style="color: rgba(128, 0, 128, 1)">42:<span style="color: rgba(128, 0, 128, 1)">58.741+<span style="color: rgba(128, 0, 128, 1)">0800 W SHARDING running with <span style="color: rgba(128, 0, 128, 1)">1 config server should be <span style="color: rgba(0, 0, 255, 1)">done only <span style="color: rgba(0, 0, 255, 1)">for testing purposes and is not recommended <span style="color: rgba(0, 0, 255, 1)">for<span style="color: rgba(0, 0, 0, 1)"> production
about to fork child process, waiting <span style="color: rgba(0, 0, 255, 1)">until server is ready <span style="color: rgba(0, 0, 255, 1)">for<span style="color: rgba(0, 0, 0, 1)"> connections.
forked process: <span style="color: rgba(128, 0, 128, 1)">8965<span style="color: rgba(0, 0, 0, 1)">
child process started successfully, parent exiting</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></pre>
</div>
<p><span style="font-size: 14px"><strong>3)</strong>分片服务器的启动:</span></p>
<p><span style="font-size: 14px">就是一个普通的mongod进程:</span></p>
<div class="cnblogs_code">
<pre>root@mongo1:~# mongod -f /etc/<span style="color: rgba(0, 0, 0, 1)">mongod_40000.conf
note: noprealloc may hurt performance <span style="color: rgba(0, 0, 255, 1)">in<span style="color: rgba(0, 0, 0, 1)"> many applications
about to fork child process, waiting <span style="color: rgba(0, 0, 255, 1)">until server is ready <span style="color: rgba(0, 0, 255, 1)">for<span style="color: rgba(0, 0, 0, 1)"> connections.
forked process: <span style="color: rgba(128, 0, 128, 1)">9020<span style="color: rgba(0, 0, 0, 1)">
child process started successfully, parent exiting</span></span></span></span></span></span></span></span></pre>
</div>
<p><span style="font-size: 14px">A服务器上面的服务开启完毕</span></p>
<div class="cnblogs_code">
<pre>root@mongo1:~# <span style="color: rgba(0, 0, 255, 1)">ps -ef | <span style="color: rgba(0, 0, 255, 1)">grep<span style="color: rgba(0, 0, 0, 1)"> mongo
root      <span style="color: rgba(128, 0, 128, 1)">9020   <span style="color: rgba(128, 0, 128, 1)">1<span style="color: rgba(128, 0, 128, 1)">0 <span style="color: rgba(128, 0, 128, 1)">14:<span style="color: rgba(128, 0, 128, 1)">47 ?      <span style="color: rgba(128, 0, 128, 1)">00:<span style="color: rgba(128, 0, 128, 1)">00:<span style="color: rgba(128, 0, 128, 1)">06 mongod -f /etc/<span style="color: rgba(0, 0, 0, 1)">mongod_40000.conf
root      <span style="color: rgba(128, 0, 128, 1)">9990   <span style="color: rgba(128, 0, 128, 1)">1<span style="color: rgba(128, 0, 128, 1)">0 <span style="color: rgba(128, 0, 128, 1)">15:<span style="color: rgba(128, 0, 128, 1)">14 ?      <span style="color: rgba(128, 0, 128, 1)">00:<span style="color: rgba(128, 0, 128, 1)">00:<span style="color: rgba(128, 0, 128, 1)">02 mongod -f /etc/<span style="color: rgba(0, 0, 0, 1)">mongod_20000.conf
root   <span style="color: rgba(128, 0, 128, 1)">10004   <span style="color: rgba(128, 0, 128, 1)">1<span style="color: rgba(128, 0, 128, 1)">0 <span style="color: rgba(128, 0, 128, 1)">15:<span style="color: rgba(128, 0, 128, 1)">14 ?      <span style="color: rgba(128, 0, 128, 1)">00:<span style="color: rgba(128, 0, 128, 1)">00:<span style="color: rgba(128, 0, 128, 1)">01 mongod -f /etc/<span style="color: rgba(0, 0, 0, 1)">mongod_21000.conf
root   <span style="color: rgba(128, 0, 128, 1)">10076   <span style="color: rgba(128, 0, 128, 1)">1<span style="color: rgba(128, 0, 128, 1)">0 <span style="color: rgba(128, 0, 128, 1)">15:<span style="color: rgba(128, 0, 128, 1)">20 ?      <span style="color: rgba(128, 0, 128, 1)">00:<span style="color: rgba(128, 0, 128, 1)">00:<span style="color: rgba(128, 0, 128, 1)">00 mongod -f /etc/<span style="color: rgba(0, 0, 0, 1)">mongod_22000.conf
root   <span style="color: rgba(128, 0, 128, 1)">10096   <span style="color: rgba(128, 0, 128, 1)">1<span style="color: rgba(128, 0, 128, 1)">0 <span style="color: rgba(128, 0, 128, 1)">15:<span style="color: rgba(128, 0, 128, 1)">20 ?      <span style="color: rgba(128, 0, 128, 1)">00:<span style="color: rgba(128, 0, 128, 1)">00:<span style="color: rgba(128, 0, 128, 1)">00 mongos -f /etc/mongod_30000.conf</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></pre>
</div>
<p><span style="font-size: 14px">按照上面的方法再到B上开启分片服务和路由服务(配置文件一样),以及在C上开启分片服务。<span style="font-size: 14px">到此分片的配置服务器、路由服务器、分片服务器都已经部署完成。</span></span></p>
<p><span style="font-size: 16px"><strong>三、配置分片:</strong><span style="font-size: 15px">下面的操作都是在mongodb的命令行里执行</span></span></p>
<p><span style="font-size: 16px"><span style="font-size: 14px"><strong>1)添加分片</strong>:<strong>sh.addShard("IP:Port")&nbsp;</strong></span></span></p>
<p><span style="font-size: 16px"><span style="font-size: 14px"><span style="color: rgba(255, 0, 0, 1)">登陆路由服务器<strong>mongos</strong> 操作:</span></span></span></p>
<div class="cnblogs_code">
<pre>root@mongo1:~# mongo --port=<span style="color: rgba(128, 0, 128, 1)">30000<span style="color: rgba(0, 0, 0, 1)">
MongoDB shell version: <span style="color: rgba(128, 0, 128, 1)">3.0.<span style="color: rgba(128, 0, 128, 1)">4<span style="color: rgba(0, 0, 0, 1)">
connecting to: <span style="color: rgba(128, 0, 128, 1)">127.0.<span style="color: rgba(128, 0, 128, 1)">0.1:<span style="color: rgba(128, 0, 128, 1)">30000/<span style="color: rgba(0, 0, 0, 1)">test
<strong>mongos</strong>&gt; </span></span></span></span></span></span></span></span></span></pre>
</div>
<p><span style="font-size: 14px">添加分片:</span></p>
<div class="cnblogs_code">
<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy"><img src="https://common.cnblogs.com/images/copycode.gif" alt="复制代码"></span></div>
<pre><strong>mongos</strong>&gt; <strong><span style="color: rgba(0, 0, 255, 1)">sh<span style="color: rgba(0, 0, 0, 1)">.status()    #查看集群的信息
</span></span></strong>--- Sharding Status ---<span style="color: rgba(0, 0, 0, 1)">
sharding version: {
    <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">_id<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 128, 1)">1<span style="color: rgba(0, 0, 0, 1)">,
    <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">minCompatibleVersion<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 128, 1)">5<span style="color: rgba(0, 0, 0, 1)">,
    <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">currentVersion<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 128, 1)">6<span style="color: rgba(0, 0, 0, 1)">,
    <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">clusterId<span style="color: rgba(128, 0, 0, 1)">" : ObjectId(<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">559f72470f93270ba60b26c6<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(0, 0, 0, 1)">)
}
shards:
balancer:
    Currently enabled:yes
    Currently running:no
    Failed balancer rounds <span style="color: rgba(0, 0, 255, 1)">in <span style="color: rgba(0, 0, 255, 1)">last <span style="color: rgba(128, 0, 128, 1)">5 attempts:<span style="color: rgba(128, 0, 128, 1)">0<span style="color: rgba(0, 0, 0, 1)">
    Migration Results <span style="color: rgba(0, 0, 255, 1)">for the <span style="color: rgba(0, 0, 255, 1)">last <span style="color: rgba(128, 0, 128, 1)">24<span style="color: rgba(0, 0, 0, 1)"> hours:
      No recent migrations
databases:
    {<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">_id<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">admin<span style="color: rgba(128, 0, 0, 1)">",<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">partitioned<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(0, 0, 255, 1)">false,<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">primary<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">config<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(0, 0, 0, 1)"> }

mongos&gt; <strong><span style="color: rgba(0, 0, 255, 1)">sh.addShard(<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">192.168.200.A:40000<span style="color: rgba(128, 0, 0, 1)">"</span></span></span></span></strong><span style="color: rgba(0, 0, 0, 1)"><strong>) #添加分片</strong>
{ <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">shardAdded<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">shard0000<span style="color: rgba(128, 0, 0, 1)">", <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">ok<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 128, 1)">1<span style="color: rgba(0, 0, 0, 1)"> }
mongos&gt; <strong><span style="color: rgba(0, 0, 255, 1)">sh.addShard(<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">192.168.200.B:40000<span style="color: rgba(128, 0, 0, 1)">"</span></span></span></span></strong><span style="color: rgba(0, 0, 0, 1)"><strong>) #添加分片</strong>
{ <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">shardAdded<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">shard0001<span style="color: rgba(128, 0, 0, 1)">", <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">ok<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 128, 1)">1<span style="color: rgba(0, 0, 0, 1)"> }
mongos&gt; <strong><span style="color: rgba(0, 0, 255, 1)">sh.addShard(<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">192.168.200.C:40000<span style="color: rgba(128, 0, 0, 1)">"</span></span></span></span></strong><span style="color: rgba(0, 0, 0, 1)"><strong>) #添加分片</strong>
{ <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">shardAdded<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">shard0002<span style="color: rgba(128, 0, 0, 1)">", <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">ok<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 128, 1)">1<span style="color: rgba(0, 0, 0, 1)"> }

mongos&gt;<strong> <span style="color: rgba(0, 0, 255, 1)">sh<span style="color: rgba(0, 0, 0, 1)">.status()    #查看集群信息
</span></span></strong>--- Sharding Status ---<span style="color: rgba(0, 0, 0, 1)">
sharding version: {
    <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">_id<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 128, 1)">1<span style="color: rgba(0, 0, 0, 1)">,
    <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">minCompatibleVersion<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 128, 1)">5<span style="color: rgba(0, 0, 0, 1)">,
    <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">currentVersion<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 128, 1)">6<span style="color: rgba(0, 0, 0, 1)">,
    <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">clusterId<span style="color: rgba(128, 0, 0, 1)">" : ObjectId(<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">559f72470f93270ba60b26c6<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(0, 0, 0, 1)">)
}
<strong>shards:#分片信息
    {</strong><strong><span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">_id<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">shard0000<span style="color: rgba(128, 0, 0, 1)">",<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">host<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">192.168.200.A:40000<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(0, 0, 0, 1)"> }
    {<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">_id<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">shard0001<span style="color: rgba(128, 0, 0, 1)">",<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">host<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">192.168.200.B:40000<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(0, 0, 0, 1)"> }
    {<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">_id<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">shard0002<span style="color: rgba(128, 0, 0, 1)">",<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">host<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">192.168.200.C:40000<span style="color: rgba(128, 0, 0, 1)">"</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></strong><span style="color: rgba(0, 0, 0, 1)"><strong> }</strong>
balancer:
    Currently enabled:yes
    Currently running:no
    Failed balancer rounds <span style="color: rgba(0, 0, 255, 1)">in <span style="color: rgba(0, 0, 255, 1)">last <span style="color: rgba(128, 0, 128, 1)">5 attempts:<span style="color: rgba(128, 0, 128, 1)">0<span style="color: rgba(0, 0, 0, 1)">
    Migration Results <span style="color: rgba(0, 0, 255, 1)">for the <span style="color: rgba(0, 0, 255, 1)">last <span style="color: rgba(128, 0, 128, 1)">24<span style="color: rgba(0, 0, 0, 1)"> hours:
      No recent migrations
databases:
    {<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">_id<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">admin<span style="color: rgba(128, 0, 0, 1)">",<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">partitioned<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(0, 0, 255, 1)">false,<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">primary<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">config<span style="color: rgba(128, 0, 0, 1)">" }</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></pre>
<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy"><img src="https://common.cnblogs.com/images/copycode.gif" alt="复制代码"></span></div>
</div>
<p><strong>2)开启分片功能:sh.enableSharding("库名")、sh.shardCollection("库名.集合名",{"key":1})</strong></p>
<div class="cnblogs_code">
<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy"><img src="https://common.cnblogs.com/images/copycode.gif" alt="复制代码"></span></div>
<pre>mongos&gt;<strong> <span style="color: rgba(0, 0, 255, 1)">sh.enableSharding(<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">dba<span style="color: rgba(128, 0, 0, 1)">"</span></span></span></span></strong><span style="color: rgba(0, 0, 0, 1)"><strong>)#首先对数据库启用分片</strong>
{ <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">ok<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 128, 1)">1<span style="color: rgba(0, 0, 0, 1)"> }
mongos&gt; <strong><span style="color: rgba(0, 0, 255, 1)">sh<span style="color: rgba(0, 0, 0, 1)">.status()               #查看分片信息
</span></span></strong>--- Sharding Status ---<span style="color: rgba(0, 0, 0, 1)">...<br>...
databases:
    {<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">_id<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">admin<span style="color: rgba(128, 0, 0, 1)">",<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">partitioned<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(0, 0, 255, 1)">false,<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">primary<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">config<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(0, 0, 0, 1)"> }
    {<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">_id<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">test<span style="color: rgba(128, 0, 0, 1)">",<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">partitioned<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(0, 0, 255, 1)">false,<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">primary<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">shard0000<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(0, 0, 0, 1)"> }
    {<strong><span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">_id<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">dba<span style="color: rgba(128, 0, 0, 1)">",<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">partitioned<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(0, 0, 255, 1)">true,<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">primary<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">shard0000<span style="color: rgba(128, 0, 0, 1)">"</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></strong><span style="color: rgba(0, 0, 0, 1)"> }

mongos&gt;<strong> <span style="color: rgba(0, 0, 255, 1)">sh.shardCollection(<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">dba.account<span style="color: rgba(128, 0, 0, 1)">",{<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">name<span style="color: rgba(128, 0, 0, 1)">":<span style="color: rgba(128, 0, 128, 1)">1</span></span></span></span></span></span></span></span></strong><span style="color: rgba(0, 0, 0, 1)"><strong>})    #再对集合进行分片,name字段是片键。<span style="color: rgba(255, 0, 0, 1)">片键的选择:利于分块、分散写请求、查询数据。</span></strong>
{ <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">collectionsharded<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">dba.account<span style="color: rgba(128, 0, 0, 1)">", <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">ok<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 128, 1)">1<span style="color: rgba(0, 0, 0, 1)"> }
mongos&gt; <span style="color: rgba(0, 0, 255, 1)">sh<span style="color: rgba(0, 0, 0, 1)">.status()
--- Sharding Status ---<span style="color: rgba(0, 0, 0, 1)">...
shards:
    {<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">_id<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">shard0000<span style="color: rgba(128, 0, 0, 1)">",<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">host<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">192.168.200.51:40000<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(0, 0, 0, 1)"> }
    {<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">_id<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">shard0001<span style="color: rgba(128, 0, 0, 1)">",<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">host<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">192.168.200.52:40000<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(0, 0, 0, 1)"> }
    {<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">_id<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">shard0002<span style="color: rgba(128, 0, 0, 1)">",<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">host<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">192.168.200.53:40000<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(0, 0, 0, 1)"> }
<span style="color: rgba(0, 0, 0, 1)">...
databases:
    {<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">_id<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">admin<span style="color: rgba(128, 0, 0, 1)">",<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">partitioned<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(0, 0, 255, 1)">false,<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">primary<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">config<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(0, 0, 0, 1)"> }
    {<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">_id<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">test<span style="color: rgba(128, 0, 0, 1)">",<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">partitioned<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(0, 0, 255, 1)">false,<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">primary<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">shard0000<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(0, 0, 0, 1)"> }
<strong>    {</strong><strong><span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">_id<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">dba<span style="color: rgba(128, 0, 0, 1)">",<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">partitioned<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(0, 0, 255, 1)">true,<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">primary<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">shard0000<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(0, 0, 0, 1)"> }#库
      dba.account
            shard key: { <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">name<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 128, 1)">1<span style="color: rgba(0, 0, 0, 1)"> }                                    #集合
            chunks:
                shard0000    <span style="color: rgba(128, 0, 128, 1)">1<span style="color: rgba(0, 0, 0, 1)">
            { <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">name<span style="color: rgba(128, 0, 0, 1)">" : { <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">$minKey<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 128, 1)">1 } } --&gt;&gt; { <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">name<span style="color: rgba(128, 0, 0, 1)">" : { <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">$maxKey<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 128, 1)">1 } } on : shard0000 Timestamp(<span style="color: rgba(128, 0, 128, 1)">1, <span style="color: rgba(128, 0, 128, 1)">0)</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></strong> </span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></pre>
<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy"><img src="https://common.cnblogs.com/images/copycode.gif" alt="复制代码"></span></div>
</div>
<p><span style="font-size: 14px">上面加粗部分表示分片信息已经配置完成。要是出现:</span></p>
<div class="cnblogs_code">
<pre>too many chunks to print, use verbose <span style="color: rgba(0, 0, 255, 1)">if you want to force print</span></pre>
</div>
<p><span style="font-size: 14px">想要看到详细的信息则需要执行:</span></p>
<div class="cnblogs_code">
<pre>mongos&gt; <span style="color: rgba(0, 0, 255, 1)">sh.status({<span style="color: rgba(128, 0, 0, 1)">"<strong><span style="color: rgba(128, 0, 0, 1)">verbose</span></strong><span style="color: rgba(128, 0, 0, 1)">":<span style="color: rgba(128, 0, 128, 1)">1<span style="color: rgba(0, 0, 0, 1)">})
或则
mongos&gt; db.printShardingStatus(<span style="color: rgba(128, 0, 0, 1)">"<strong><span style="color: rgba(128, 0, 0, 1)">vvvv</span></strong><span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(0, 0, 0, 1)">)
或则
mongos&gt; printShardingStatus(db.<strong>getSisterDB</strong>(<span style="color: rgba(128, 0, 0, 1)">"<strong><span style="color: rgba(128, 0, 0, 1)">config</span></strong><span style="color: rgba(128, 0, 0, 1)">"),<span style="color: rgba(128, 0, 128, 1)">1)</span></span></span></span></span></span></span></span></span></span></span></pre>
</div>
<p><span style="font-size: 16px"><strong>四、测试</strong>&nbsp;:对dba库的account集合进行测试,随机写入,查看是否分散到3个分片中。</span></p>
<p><span style="font-size: 14px; color: rgba(255, 0, 0, 1)">判断是否为shard:<span style="font-size: 14px">db.runCommand({isdbgrid:1})</span></span></p>
<div class="cnblogs_code">
<pre>mongos&gt; db.runCommand({<strong>isdbgrid</strong>:<span style="color: rgba(128, 0, 128, 1)">1<span style="color: rgba(0, 0, 0, 1)">})
{ <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">isdbgrid<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 128, 1)">1, <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">hostname<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">mongo3c<span style="color: rgba(128, 0, 0, 1)">", <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">ok<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 128, 1)">1 }</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></pre>
</div>
<p>通过一个python脚本进行随机写入:分别向A、B 2个mongos各写入10万条记录。</p>
<div class="cnblogs_code"><img id="code_img_opened_438c2633-ff23-4633-aada-ac63ff7b9ddf" class="code_img_opened" src="https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif" alt="">
<div id="cnblogs_code_open_438c2633-ff23-4633-aada-ac63ff7b9ddf" class="cnblogs_code_hide" style="display: block">
<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy"><img src="https://common.cnblogs.com/images/copycode.gif" alt="复制代码"></span></div>
<pre><span style="color: rgba(0, 128, 0, 1)">#<span style="color: rgba(0, 128, 0, 1)">!/usr/bin/env python<span style="color: rgba(0, 128, 0, 1)">
#<span style="color: rgba(0, 128, 0, 1)">-*- coding:utf-8 -*-<span style="color: rgba(0, 128, 0, 1)">
#<span style="color: rgba(0, 128, 0, 1)">随即写MongoDB Shard 测试

<span style="color: rgba(0, 0, 255, 1)">import<span style="color: rgba(0, 0, 0, 1)"> pymongo
<span style="color: rgba(0, 0, 255, 1)">import<span style="color: rgba(0, 0, 0, 1)"> time
<span style="color: rgba(0, 0, 255, 1)">from random <span style="color: rgba(0, 0, 255, 1)">import<span style="color: rgba(0, 0, 0, 1)"> Random
<span style="color: rgba(0, 0, 255, 1)">def random_str(randomlength=8<span style="color: rgba(0, 0, 0, 1)">):
    str = <span style="color: rgba(128, 0, 0, 1)">''<span style="color: rgba(0, 0, 0, 1)">
    chars = <span style="color: rgba(128, 0, 0, 1)">'<span style="color: rgba(128, 0, 0, 1)">AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz0123456789<span style="color: rgba(128, 0, 0, 1)">'<span style="color: rgba(0, 0, 0, 1)">
    length = len(chars) - 1<span style="color: rgba(0, 0, 0, 1)">
    random =<span style="color: rgba(0, 0, 0, 1)"> Random()
    <span style="color: rgba(0, 0, 255, 1)">for i <span style="color: rgba(0, 0, 255, 1)">in<span style="color: rgba(0, 0, 0, 1)"> range(randomlength):
      str+=<span style="color: rgba(0, 0, 0, 1)">chars
      <span style="color: rgba(0, 0, 255, 1)">return<span style="color: rgba(0, 0, 0, 1)"> str

<span style="color: rgba(0, 0, 255, 1)">def<span style="color: rgba(0, 0, 0, 1)"> inc_data(conn):
    db =<span style="color: rgba(0, 0, 0, 1)"> conn.dba
<span style="color: rgba(0, 128, 0, 1)">#<span style="color: rgba(0, 128, 0, 1)">    db = conn.test
    collection =<span style="color: rgba(0, 0, 0, 1)"> db.account
    <span style="color: rgba(0, 0, 255, 1)">for i <span style="color: rgba(0, 0, 255, 1)">in range(100000<span style="color: rgba(0, 0, 0, 1)">):
      str = <span style="color: rgba(128, 0, 0, 1)">''<span style="color: rgba(0, 0, 0, 1)">
      chars = <span style="color: rgba(128, 0, 0, 1)">'<span style="color: rgba(128, 0, 0, 1)">AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz0123456789<span style="color: rgba(128, 0, 0, 1)">'<span style="color: rgba(0, 0, 0, 1)">
      length = len(chars) - 1<span style="color: rgba(0, 0, 0, 1)">
      random =<span style="color: rgba(0, 0, 0, 1)"> Random()
      <span style="color: rgba(0, 0, 255, 1)">for i <span style="color: rgba(0, 0, 255, 1)">in range(15<span style="color: rgba(0, 0, 0, 1)">):
            str+=<span style="color: rgba(0, 0, 0, 1)">chars
            string =<span style="color: rgba(0, 0, 0, 1)"> str
      collection.insert({<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">name<span style="color: rgba(128, 0, 0, 1)">" : string, <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">age<span style="color: rgba(128, 0, 0, 1)">" : 123+i, <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">address<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">hangzhou<span style="color: rgba(128, 0, 0, 1)">"+<span style="color: rgba(0, 0, 0, 1)">string})

<span style="color: rgba(0, 0, 255, 1)">if <span style="color: rgba(128, 0, 128, 1)">__name__ ==<span style="color: rgba(128, 0, 0, 1)">'<span style="color: rgba(128, 0, 0, 1)">__main__<span style="color: rgba(128, 0, 0, 1)">'<span style="color: rgba(0, 0, 0, 1)">:
    conn = pymongo.MongoClient(host=<span style="color: rgba(128, 0, 0, 1)">'<span style="color: rgba(128, 0, 0, 1)">192.168.200.A/B<span style="color: rgba(128, 0, 0, 1)">',port=30000<span style="color: rgba(0, 0, 0, 1)">)

    StartTime =<span style="color: rgba(0, 0, 0, 1)"> time.time()
    <span style="color: rgba(0, 0, 255, 1)">print <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">===============$inc===============<span style="color: rgba(128, 0, 0, 1)">"
    <span style="color: rgba(0, 0, 255, 1)">print <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">StartTime : %s<span style="color: rgba(128, 0, 0, 1)">" %<span style="color: rgba(0, 0, 0, 1)">StartTime
    inc_data(conn)
    EndTime =<span style="color: rgba(0, 0, 0, 1)"> time.time()
    <span style="color: rgba(0, 0, 255, 1)">print <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">EndTime : %s<span style="color: rgba(128, 0, 0, 1)">" %<span style="color: rgba(0, 0, 0, 1)">EndTime
    CostTime = round(EndTime-<span style="color: rgba(0, 0, 0, 1)">StartTime)
    <span style="color: rgba(0, 0, 255, 1)">print <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">CostTime : %s<span style="color: rgba(128, 0, 0, 1)">" %CostTime</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></pre>
<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy"><img src="https://common.cnblogs.com/images/copycode.gif" alt="复制代码"></span></div>
</div>
</div>
<p><span style="font-size: 14px">查看是否分片:<strong>db.collection.stats()</strong></span></p>
<div class="cnblogs_code">
<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy"><img src="https://common.cnblogs.com/images/copycode.gif" alt="复制代码"></span></div>
<pre><strong>mongos&gt;</strong><span style="color: rgba(0, 0, 0, 1)"><strong> db.account.stats() #查看集合的分布情况</strong>
<span style="color: rgba(0, 0, 0, 1)">...<br>...
    <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">shards<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(0, 0, 0, 1)"> : {
      <span style="color: rgba(128, 0, 0, 1)">"<strong><span style="color: rgba(128, 0, 0, 1)">shard0000</span></strong><span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(0, 0, 0, 1)"> : {
            <strong><span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">ns<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">dba.account<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(0, 0, 0, 1)">,
            <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">count<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 128, 1)">89710<span style="color: rgba(0, 0, 0, 1)">,
            <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">size<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 128, 1)">10047520<span style="color: rgba(0, 0, 0, 1)">,
</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></strong><span style="color: rgba(0, 0, 0, 1)">...<br>...
      <span style="color: rgba(128, 0, 0, 1)">"<strong><span style="color: rgba(128, 0, 0, 1)">shard0001</span></strong><span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(0, 0, 0, 1)"> : {
            <strong><span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">ns<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">dba.account<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(0, 0, 0, 1)">,
            <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">count<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 128, 1)">19273<span style="color: rgba(0, 0, 0, 1)">,
            <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">size<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 128, 1)">2158576<span style="color: rgba(0, 0, 0, 1)">,
</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></strong><span style="color: rgba(0, 0, 0, 1)">...<br>...
      <span style="color: rgba(128, 0, 0, 1)">"<strong><span style="color: rgba(128, 0, 0, 1)">shard0002</span></strong><span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(0, 0, 0, 1)"> : {
            <strong><span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">ns<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">dba.account<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(0, 0, 0, 1)">,
            <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">count<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 128, 1)">91017<span style="color: rgba(0, 0, 0, 1)">,
            <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">size<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 128, 1)">10193904<span style="color: rgba(0, 0, 0, 1)">,
...<br>...</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></strong></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></pre>
<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy"><img src="https://common.cnblogs.com/images/copycode.gif" alt="复制代码"></span></div>
</div>
<p><span style="font-size: 14px">上面加粗部分为集合的基本信息,可以看到分片成功,各个分片都有数据(count)。到此MongoDB分片集群搭建成功。</span></p>
<p><span style="font-size: 14px">++++++++++++++++++++++++++++++++++++++++++++++++</span></p>
<p><span style="font-size: 14px">感兴趣的同学可以看下面这个比较有趣的现象:</span></p>
<div class="cnblogs_code">
<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy"><img src="https://common.cnblogs.com/images/copycode.gif" alt="复制代码"></span></div>
<pre><span style="color: rgba(0, 0, 0, 1)">#在写之前分片的基本信息:
mongos&gt; <span style="color: rgba(0, 0, 255, 1)">sh<span style="color: rgba(0, 0, 0, 1)">.status()
--- Sharding Status ---<span style="color: rgba(0, 0, 0, 1)">
...
...
databases:
    {<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">_id<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">admin<span style="color: rgba(128, 0, 0, 1)">",<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">partitioned<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(0, 0, 255, 1)">false,<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">primary<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">config<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(0, 0, 0, 1)"> }
    {<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">_id<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">test<span style="color: rgba(128, 0, 0, 1)">",<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">partitioned<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(0, 0, 255, 1)">false,<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">primary<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">shard0000<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(0, 0, 0, 1)"> }
    {<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">_id<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">dba<span style="color: rgba(128, 0, 0, 1)">",<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">partitioned<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(0, 0, 255, 1)">true,<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">primary<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">shard0000<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(0, 0, 0, 1)"> }
      dba.account
            shard key: { <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">name<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 128, 1)">1<span style="color: rgba(0, 0, 0, 1)"> }
            <strong>chunks:
                shard0000    </strong><strong><span style="color: rgba(128, 0, 128, 1)">1<span style="color: rgba(0, 0, 0, 1)">
            { <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">name<span style="color: rgba(128, 0, 0, 1)">" : { <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">$minKey<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 128, 1)">1 } } --&gt;&gt; { <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">name<span style="color: rgba(128, 0, 0, 1)">" : { <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">$maxKey<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 128, 1)">1 } } on : shard0000 Timestamp(<span style="color: rgba(128, 0, 128, 1)">1, <span style="color: rgba(128, 0, 128, 1)">0</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></strong><span style="color: rgba(0, 0, 0, 1)"><strong>)   #可以看到这里片键的写入,都是写在shard0000里面的。
</strong>
#在写期间的分片基本信息:
mongos&gt; <span style="color: rgba(0, 0, 255, 1)">sh<span style="color: rgba(0, 0, 0, 1)">.status()
--- Sharding Status ---<span style="color: rgba(0, 0, 0, 1)">
...
...
databases:
    {<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">_id<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">admin<span style="color: rgba(128, 0, 0, 1)">",<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">partitioned<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(0, 0, 255, 1)">false,<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">primary<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">config<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(0, 0, 0, 1)"> }
    {<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">_id<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">test<span style="color: rgba(128, 0, 0, 1)">",<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">partitioned<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(0, 0, 255, 1)">false,<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">primary<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">shard0000<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(0, 0, 0, 1)"> }
    {<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">_id<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">dba<span style="color: rgba(128, 0, 0, 1)">",<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">partitioned<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(0, 0, 255, 1)">true,<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">primary<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">shard0000<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(0, 0, 0, 1)"> }
      dba.account
            shard key: { <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">name<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 128, 1)">1<span style="color: rgba(0, 0, 0, 1)"> }
<strong>            chunks:          #数据块分布
                shard0000    </strong><strong><span style="color: rgba(128, 0, 128, 1)">1<span style="color: rgba(0, 0, 0, 1)">
                shard0001    <span style="color: rgba(128, 0, 128, 1)">1<span style="color: rgba(0, 0, 0, 1)">
                shard0002    <span style="color: rgba(128, 0, 128, 1)">1<span style="color: rgba(0, 0, 0, 1)">
            { <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">name<span style="color: rgba(128, 0, 0, 1)">" : { <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">$minKey<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 128, 1)">1 } } --&gt;&gt; { <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">name<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">5yyfY8mmR5HyhGJ<span style="color: rgba(128, 0, 0, 1)">" } on : shard0001 Timestamp(<span style="color: rgba(128, 0, 128, 1)">2, <span style="color: rgba(128, 0, 128, 1)">0<span style="color: rgba(0, 0, 0, 1)">)
            { <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">name<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">5yyfY8mmR5HyhGJ<span style="color: rgba(128, 0, 0, 1)">" } --&gt;&gt; { <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">name<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">woQAv99Pq1FVoMX<span style="color: rgba(128, 0, 0, 1)">" } on : shard0002 Timestamp(<span style="color: rgba(128, 0, 128, 1)">3, <span style="color: rgba(128, 0, 128, 1)">0<span style="color: rgba(0, 0, 0, 1)">)
            { <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">name<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">woQAv99Pq1FVoMX<span style="color: rgba(128, 0, 0, 1)">" } --&gt;&gt; { <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">name<span style="color: rgba(128, 0, 0, 1)">" : { <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">$maxKey<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 128, 1)">1 } } on : shard0000 Timestamp(<span style="color: rgba(128, 0, 128, 1)">3, <span style="color: rgba(128, 0, 128, 1)">1</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></strong><span style="color: rgba(0, 0, 0, 1)"><strong>)   #可以看到片键写入的基本分布
</strong>
#在写完成后的基本信息:
mongos&gt; <span style="color: rgba(0, 0, 255, 1)">sh<span style="color: rgba(0, 0, 0, 1)">.status()
--- Sharding Status ---<span style="color: rgba(0, 0, 0, 1)">
...
...
databases:
    {<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">_id<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">admin<span style="color: rgba(128, 0, 0, 1)">",<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">partitioned<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(0, 0, 255, 1)">false,<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">primary<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">config<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(0, 0, 0, 1)"> }
    {<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">_id<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">test<span style="color: rgba(128, 0, 0, 1)">",<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">partitioned<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(0, 0, 255, 1)">false,<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">primary<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">shard0000<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(0, 0, 0, 1)"> }
    {<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">_id<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">dba<span style="color: rgba(128, 0, 0, 1)">",<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">partitioned<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(0, 0, 255, 1)">true,<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">primary<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">shard0000<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(0, 0, 0, 1)"> }
      dba.account
            shard key: { <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">name<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 128, 1)">1<span style="color: rgba(0, 0, 0, 1)"> }
            <strong>chunks:          #数据块分布</strong>
<strong>                shard0000    </strong><strong><span style="color: rgba(128, 0, 128, 1)">2<span style="color: rgba(0, 0, 0, 1)">
                shard0001    <span style="color: rgba(128, 0, 128, 1)">1<span style="color: rgba(0, 0, 0, 1)">
                shard0002    <span style="color: rgba(128, 0, 128, 1)">2<span style="color: rgba(0, 0, 0, 1)">
            { <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">name<span style="color: rgba(128, 0, 0, 1)">" : { <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">$minKey<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 128, 1)">1 } } --&gt;&gt; { <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">name<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">5yyfY8mmR5HyhGJ<span style="color: rgba(128, 0, 0, 1)">" } on : shard0001 Timestamp(<span style="color: rgba(128, 0, 128, 1)">2, <span style="color: rgba(128, 0, 128, 1)">0<span style="color: rgba(0, 0, 0, 1)">)
            { <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">name<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">5yyfY8mmR5HyhGJ<span style="color: rgba(128, 0, 0, 1)">" } --&gt;&gt; { <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">name<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">UavMbMlfszZOFrz<span style="color: rgba(128, 0, 0, 1)">" } on : shard0000 Timestamp(<span style="color: rgba(128, 0, 128, 1)">4, <span style="color: rgba(128, 0, 128, 1)">0<span style="color: rgba(0, 0, 0, 1)">)
            { <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">name<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">UavMbMlfszZOFrz<span style="color: rgba(128, 0, 0, 1)">" } --&gt;&gt; { <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">name<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">t9LyVSNXDmf6esP<span style="color: rgba(128, 0, 0, 1)">" } on : shard0002 Timestamp(<span style="color: rgba(128, 0, 128, 1)">4, <span style="color: rgba(128, 0, 128, 1)">1<span style="color: rgba(0, 0, 0, 1)">)
            { <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">name<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">t9LyVSNXDmf6esP<span style="color: rgba(128, 0, 0, 1)">" } --&gt;&gt; { <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">name<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">woQAv99Pq1FVoMX<span style="color: rgba(128, 0, 0, 1)">" } on : shard0002 Timestamp(<span style="color: rgba(128, 0, 128, 1)">3, <span style="color: rgba(128, 0, 128, 1)">4<span style="color: rgba(0, 0, 0, 1)">)
            { <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">name<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">woQAv99Pq1FVoMX<span style="color: rgba(128, 0, 0, 1)">" } --&gt;&gt; { <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">name<span style="color: rgba(128, 0, 0, 1)">" : { <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">$maxKey<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 128, 1)">1 } } on : shard0000 Timestamp(<span style="color: rgba(128, 0, 128, 1)">3, <span style="color: rgba(128, 0, 128, 1)">1)#最后片键写入的分布</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></strong></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></pre>
<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy"><img src="https://common.cnblogs.com/images/copycode.gif" alt="复制代码"></span></div>
</div>
<p><span style="font-size: 14px">上面加粗的信息对比上看到,本来在每个分片上都只有一个块,最后在shard0000、shard0002上有2个块,被拆分了。shard0001不变。<span style="color: rgba(255, 0, 0, 1)">这是因为mongos在收到写请求的时候,会检查当前块的拆分阀值点。到达该阀值的时候,会向分片发起一个拆分的请求。例子中shard0000和shard0002里的<strong>块被拆分了。分片内的数据进行了迁移</strong>(有一定的消耗),最后通过一个<strong>均衡器</strong>来对数据进行转移分配。所以在写入途中要是看到一个分片中集合的数量变小也是正常的。</span></span></p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 0, 1)"><strong>balancer</strong>:<strong>#均衡器</strong>
    Currently enabled:yes
    <strong>Currently running:</strong><strong>yes   #正在转移</strong>
      Balancer lock taken at Fri Jul <span style="color: rgba(128, 0, 128, 1)">10 <span style="color: rgba(128, 0, 128, 1)">2015 <span style="color: rgba(128, 0, 128, 1)">22:<span style="color: rgba(128, 0, 128, 1)">57:<span style="color: rgba(128, 0, 128, 1)">27 GMT+<span style="color: rgba(128, 0, 128, 1)">0800 (CST) by mongo2:<span style="color: rgba(128, 0, 128, 1)">30000:<span style="color: rgba(128, 0, 128, 1)">1436540125:<span style="color: rgba(128, 0, 128, 1)">1804289383:Balancer:<span style="color: rgba(128, 0, 128, 1)">846930886</span></span></span></span></span></span></span></span></span></span></span></pre>
</div>
<p><span style="font-size: 14px"><span style="color: rgba(255, 0, 0, 1)"><span><strong><span>均衡器</span></strong><span style="color: rgba(0, 0, 0, 1)">:均衡器负责数据迁移,周期性的检查分片是否存在不均衡,如果不存在则会开始块的迁移,config.locks集合里的state表示均衡器是否找正在运行,0表示非活动状态,2表示正在均衡。均衡迁移数据的过程会增加系统的负载:目标分片必须查询源分片的所有文档,将文档插入目标分片中,再清除源分片的数据。可以关闭均衡器(不建议):关闭会导致各分片数据分布不均衡,磁盘空间得不到有效的利用。&nbsp;</span></span></span></span></p>
<div class="cnblogs_code">
<pre>mongos&gt; <strong><span style="color: rgba(0, 0, 255, 1)">sh.setBalancerState(<span style="color: rgba(0, 0, 255, 1)">false</span></span></strong><span style="color: rgba(0, 0, 0, 1)"><strong>)</strong><strong>#关闭自动均衡器,手动均衡,打开:sh.setBalancerState(true)</strong>
mongos&gt; <strong>db.settings.<span style="color: rgba(0, 0, 255, 1)">find</span></strong><span style="color: rgba(0, 0, 0, 1)"><strong>()</strong>          <strong>#查看均衡器状态</strong>
{ <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">_id<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">balancer<span style="color: rgba(128, 0, 0, 1)">", <span style="color: rgba(128, 0, 0, 1)">"<strong><span style="color: rgba(128, 0, 0, 1)">stopped</span></strong><span style="color: rgba(128, 0, 0, 1)">" : <strong><span style="color: rgba(0, 0, 255, 1)">true</span></strong> }</span></span></span></span></span></span></span></span></span></span></pre>
</div>
<p><span style="font-size: 14px">可以为均衡器设置一个均衡时间窗口:<strong><span class="s1">activeWindow</span></strong></span></p>
<div class="cnblogs_code">
<pre>mongos&gt; db.settings.update({<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">_id<span style="color: rgba(128, 0, 0, 1)">":<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">balancer<span style="color: rgba(128, 0, 0, 1)">"},<strong>{<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">$set<span style="color: rgba(128, 0, 0, 1)">":{<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">activeWindow<span style="color: rgba(128, 0, 0, 1)">":{<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">start<span style="color: rgba(128, 0, 0, 1)">":<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">08:00<span style="color: rgba(128, 0, 0, 1)">",<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">stop<span style="color: rgba(128, 0, 0, 1)">":<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">02:00<span style="color: rgba(128, 0, 0, 1)">"}}},<span style="color: rgba(0, 0, 255, 1)">true</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></strong><span style="color: rgba(0, 0, 0, 1)"><strong>)</strong>
WriteResult({ <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">nMatched<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 128, 1)">1, <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">nUpserted<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 128, 1)">0, <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">nModified<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 128, 1)">1<span style="color: rgba(0, 0, 0, 1)"> })
mongos&gt; db.settings.<span style="color: rgba(0, 0, 255, 1)">find({<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">_id<span style="color: rgba(128, 0, 0, 1)">":<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">balancer<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(0, 0, 0, 1)">})
{ <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">_id<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">balancer<span style="color: rgba(128, 0, 0, 1)">", <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">stopped<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(0, 0, 255, 1)">false, <strong><span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">activeWindow<span style="color: rgba(128, 0, 0, 1)">" : { <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">start<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">08:00<span style="color: rgba(128, 0, 0, 1)">", <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">stop<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">02:00<span style="color: rgba(128, 0, 0, 1)">" }</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></strong> }</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></pre>
</div>
<p><span style="font-size: 14px">上面说明:<span style="color: rgba(255, 0, 0, 1)">均衡只会在早上8点到凌晨2点进行均衡操作。均衡器是以块的数量作为迁移指标,而非数据大小,<strong>块的大小默认是64M</strong>,可以修改:(<strong>config.settings</strong>)</span></span></p>
<div class="cnblogs_code">
<pre>mongos&gt; db.<strong>settings</strong>.<span style="color: rgba(0, 0, 255, 1)">find<span style="color: rgba(0, 0, 0, 1)">()
{ <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">_id<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<strong><span style="color: rgba(128, 0, 0, 1)">chunksize</span></strong><span style="color: rgba(128, 0, 0, 1)">", <strong><span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">value<span style="color: rgba(128, 0, 0, 1)">"</span></span></span></strong> : <span style="color: rgba(128, 0, 128, 1)">64<span style="color: rgba(0, 0, 0, 1)"> }
mongos&gt;<strong> db.settings.save({<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">_id<span style="color: rgba(128, 0, 0, 1)">":<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">chunksize<span style="color: rgba(128, 0, 0, 1)">",<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">value<span style="color: rgba(128, 0, 0, 1)">":<span style="color: rgba(128, 0, 128, 1)">32</span></span></span></span></span></span></span></span></span></span></strong><span style="color: rgba(0, 0, 0, 1)"><strong>})</strong>
WriteResult({ <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">nMatched<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 128, 1)">1, <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">nUpserted<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 128, 1)">0, <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">nModified<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 128, 1)">1<span style="color: rgba(0, 0, 0, 1)"> })
mongos&gt; db.settings.<span style="color: rgba(0, 0, 255, 1)">find<span style="color: rgba(0, 0, 0, 1)">()
{ <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">_id<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<strong><span style="color: rgba(128, 0, 0, 1)">chunksize</span></strong><span style="color: rgba(128, 0, 0, 1)">", <span style="color: rgba(128, 0, 0, 1)">"<strong><span style="color: rgba(128, 0, 0, 1)">value</span></strong><span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 128, 1)">32 }</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></pre>
</div>
<p><span style="font-size: 14px">上面把块的默认大小改成了32M,除了通过均衡器自动迁移外,还可以<strong>手动迁移数据</strong>:<strong><span style="color: rgba(255, 0, 0, 1)">sh.moveChunk("db.collection",{块地址},"新片名称")</span></strong></span></p>
<div class="cnblogs_code">
<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy"><img src="https://common.cnblogs.com/images/copycode.gif" alt="复制代码"></span></div>
<pre>mongos&gt; db.chunks.<span style="color: rgba(0, 0, 255, 1)">find({<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">_id<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">abc.account-name_\"wPeFnJEvendSTbH\"<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(0, 0, 0, 1)">}).pretty() <strong>#先到config.chunks上任意找一个块</strong>
{
    <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">_id<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">abc.account-name_\"wPeFnJEvendSTbH\"<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(0, 0, 0, 1)">,
    <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">lastmod<span style="color: rgba(128, 0, 0, 1)">" : Timestamp(<span style="color: rgba(128, 0, 128, 1)">3, <span style="color: rgba(128, 0, 128, 1)">1<span style="color: rgba(0, 0, 0, 1)">),
    <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">lastmodEpoch<span style="color: rgba(128, 0, 0, 1)">" : ObjectId(<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">55a52ff1fdd9a605a0371327<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(0, 0, 0, 1)">),
    <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">ns<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">abc.account<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(0, 0, 0, 1)">,
    <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">min<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(0, 0, 0, 1)"> : {
      <strong><span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">name<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">wPeFnJEvendSTbH<span style="color: rgba(128, 0, 0, 1)">"            #被移动的块</span></span></span></span></span></span></strong><span style="color: rgba(0, 0, 0, 1)">
    },
    <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">max<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(0, 0, 0, 1)"> : {
      <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">name<span style="color: rgba(128, 0, 0, 1)">" : { <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">$maxKey<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 128, 1)">1<span style="color: rgba(0, 0, 0, 1)"> }
    },
    <strong><span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">shard<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">shard0000<span style="color: rgba(128, 0, 0, 1)">"                     #原先所在的分片</span></span></span></span></span></span></strong><span style="color: rgba(0, 0, 0, 1)">
}
mongos&gt; <span style="color: rgba(255, 0, 0, 1)"><strong>sh.moveChunk("abc.account",{"name" : "wPeFnJEvendSTbH"},"mablevi"</strong><span style="color: rgba(0, 0, 0, 1)"><strong><span style="color: rgba(255, 0, 0, 1)">)#把abc.account集合中包含name(片键)为""的快迁移到mablevi分片中</span></strong>
<strong>{ </strong><strong><span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">millis<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 128, 1)">6800, <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">ok<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 128, 1)">1</span></span></span></span></span></span></span></span></strong><span style="color: rgba(0, 0, 0, 1)"><strong> }</strong>
mongos&gt; db.chunks.<span style="color: rgba(0, 0, 255, 1)">find({<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">_id<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">abc.account-name_\"wPeFnJEvendSTbH\"<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(0, 0, 0, 1)">}).pretty()
{
    <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">_id<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">abc.account-name_\"wPeFnJEvendSTbH\"<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(0, 0, 0, 1)">,
    <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">lastmod<span style="color: rgba(128, 0, 0, 1)">" : Timestamp(<span style="color: rgba(128, 0, 128, 1)">5, <span style="color: rgba(128, 0, 128, 1)">0<span style="color: rgba(0, 0, 0, 1)">),
    <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">lastmodEpoch<span style="color: rgba(128, 0, 0, 1)">" : ObjectId(<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">55a52ff1fdd9a605a0371327<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(0, 0, 0, 1)">),
    <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">ns<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">abc.account<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(0, 0, 0, 1)">,
    <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">min<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(0, 0, 0, 1)"> : {
      <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">name<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">wPeFnJEvendSTbH<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(0, 0, 0, 1)">
    },
    <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">max<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(0, 0, 0, 1)"> : {
      <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">name<span style="color: rgba(128, 0, 0, 1)">" : { <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">$maxKey<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 128, 1)">1<span style="color: rgba(0, 0, 0, 1)"> }
    },
    <strong><span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">shard<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">mablevi<span style="color: rgba(128, 0, 0, 1)">"                        #已被迁移到新片</span></span></span></span></span></span></strong><span style="color: rgba(0, 0, 0, 1)">
}</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></pre>
<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy"><img src="https://common.cnblogs.com/images/copycode.gif" alt="复制代码"></span></div>
</div>
<p><span style="font-size: 14px">上面是手动移动数据的操作,数据被移动。&nbsp;要是块超出了64M限制【原因是片键没选好(日期、状态值等),导致一个块无限增大】,则无法进行自动均衡,无法分块。有2个办法:1是加大块的大小(<strong>setting</strong>),2是拆分<strong>sh.splitAt()</strong>(推荐)。</span></p>
<p><span style="font-size: 14px">所以要是遇到分片写入比单点<span style="color: rgba(255, 0, 0, 1)"><strong>写入慢就是因为分片路由服务(mongos)需要维护元数据、数据迁移、路由开销等</strong>。</span></span></p>
<p><span>++++++++++++++++++++++++++++++++++++++++++++++++<br></span></p>
<p><span style="font-size: 16px"><strong>五、高可用:Sharding+Replset</strong></span></p>
<p><span style="font-size: 14px">上面的分片都是单点的,要是一个分片坏了,则数据会丢失,利用之前减少的副本集,能否把副本集加入到分片中?下面就来说明下。</span></p>
<p><span style="font-size: 14px"><strong>1)</strong>添加副本集分片服务器(<strong>mmm</strong>副本集名称):这里测试就只对一个分片加副本集,要实现完全的高可用就需要对所有分片加副本集,避免单点故障</span></p>
<p><span style="font-size: 14px">一个普通的副本集:</span></p>
<div class="cnblogs_code"><img id="code_img_closed_7c8d9ada-81fd-49c6-b12b-6f0e96ce2790" class="code_img_closed" style="display: inline" src="https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif" alt="">

<span class="cnblogs_code_collapse" style="display: inline">View Code</span></div>
<p>现在需要把这个副本集加入到分片中:</p>
<div class="cnblogs_code">
<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy"><img src="https://common.cnblogs.com/images/copycode.gif" alt="复制代码"></span></div>
<pre>mongos&gt; <strong><span style="color: rgba(0, 0, 255, 1)">sh.addShard(<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">mmm/192.168.200.25:27017,192.168.200.245:27017,192.168.200.245:37017<span style="color: rgba(128, 0, 0, 1)">"</span></span></span></span></strong><span style="color: rgba(0, 0, 0, 1)"><strong>) #加入副本集分片</strong>
{ <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">shardAdded<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">mmm<span style="color: rgba(128, 0, 0, 1)">", <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">ok<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 128, 1)">1<span style="color: rgba(0, 0, 0, 1)"> }

mongos&gt; <strong><span style="color: rgba(0, 0, 255, 1)">sh<span style="color: rgba(0, 0, 0, 1)">.status()
</span></span></strong>--- Sharding Status ---<span style="color: rgba(0, 0, 0, 1)">
...<br>...<br><span style="color: rgba(0, 0, 0, 1)"><strong>shards:
    {</strong><strong><span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">_id<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">mmm<span style="color: rgba(128, 0, 0, 1)">",<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">host<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">mmm/192.168.200.245:27017,192.168.200.245:37017,192.168.200.25:27017<span style="color: rgba(128, 0, 0, 1)">"</span></span></span></span></span></span></span></span></span></span></span></span></strong><span style="color: rgba(0, 0, 0, 1)"><strong> }
</strong>    {<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">_id<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">shard0000<span style="color: rgba(128, 0, 0, 1)">",<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">host<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">192.168.200.51:40000<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(0, 0, 0, 1)"> }
    {<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">_id<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">shard0001<span style="color: rgba(128, 0, 0, 1)">",<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">host<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">192.168.200.52:40000<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(0, 0, 0, 1)"> }
    {<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">_id<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">shard0002<span style="color: rgba(128, 0, 0, 1)">",<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">host<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">192.168.200.53:40000<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(0, 0, 0, 1)"> }
balancer:
    Currently enabled:yes
    Currently running:no
    Failed balancer rounds <span style="color: rgba(0, 0, 255, 1)">in <span style="color: rgba(0, 0, 255, 1)">last <span style="color: rgba(128, 0, 128, 1)">5 attempts:<span style="color: rgba(128, 0, 128, 1)">0<span style="color: rgba(0, 0, 0, 1)">
    Migration Results <span style="color: rgba(0, 0, 255, 1)">for the <span style="color: rgba(0, 0, 255, 1)">last <span style="color: rgba(128, 0, 128, 1)">24<span style="color: rgba(0, 0, 0, 1)"> hours:
      <span style="color: rgba(128, 0, 128, 1)">4<span style="color: rgba(0, 0, 0, 1)"> : Success
databases:
    {<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">_id<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">admin<span style="color: rgba(128, 0, 0, 1)">",<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">partitioned<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(0, 0, 255, 1)">false,<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">primary<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">config<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(0, 0, 0, 1)"> }
    {<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">_id<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">test<span style="color: rgba(128, 0, 0, 1)">",<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">partitioned<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(0, 0, 255, 1)">false,<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">primary<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">shard0000<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(0, 0, 0, 1)"> }
    {<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">_id<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">dba<span style="color: rgba(128, 0, 0, 1)">",<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">partitioned<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(0, 0, 255, 1)">true,<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">primary<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">shard0000<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(0, 0, 0, 1)"> }
      dba.account
            shard key: { <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">name<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 128, 1)">1<span style="color: rgba(0, 0, 0, 1)"> }
            chunks:
                mmm    <span style="color: rgba(128, 0, 128, 1)">1<span style="color: rgba(0, 0, 0, 1)">
                shard0000    <span style="color: rgba(128, 0, 128, 1)">1<span style="color: rgba(0, 0, 0, 1)">
                shard0001    <span style="color: rgba(128, 0, 128, 1)">1<span style="color: rgba(0, 0, 0, 1)">
                shard0002    <span style="color: rgba(128, 0, 128, 1)">2<span style="color: rgba(0, 0, 0, 1)">
            { <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">name<span style="color: rgba(128, 0, 0, 1)">" : { <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">$minKey<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 128, 1)">1 } } --&gt;&gt; { <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">name<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">5yyfY8mmR5HyhGJ<span style="color: rgba(128, 0, 0, 1)">" } on : shard0001 Timestamp(<span style="color: rgba(128, 0, 128, 1)">2, <span style="color: rgba(128, 0, 128, 1)">0<span style="color: rgba(0, 0, 0, 1)">)
            <strong>{ </strong><strong><span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">name<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">5yyfY8mmR5HyhGJ<span style="color: rgba(128, 0, 0, 1)">" } --&gt;&gt; { <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">name<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">UavMbMlfszZOFrz<span style="color: rgba(128, 0, 0, 1)">" } on : mmm Timestamp(<span style="color: rgba(128, 0, 128, 1)">5, <span style="color: rgba(128, 0, 128, 1)">0</span></span></span></span></span></span></span></span></span></span></span></span></span></span></strong><span style="color: rgba(0, 0, 0, 1)"><strong>)</strong>
            { <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">name<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">UavMbMlfszZOFrz<span style="color: rgba(128, 0, 0, 1)">" } --&gt;&gt; { <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">name<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">t9LyVSNXDmf6esP<span style="color: rgba(128, 0, 0, 1)">" } on : shard0002 Timestamp(<span style="color: rgba(128, 0, 128, 1)">4, <span style="color: rgba(128, 0, 128, 1)">1<span style="color: rgba(0, 0, 0, 1)">)
            { <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">name<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">t9LyVSNXDmf6esP<span style="color: rgba(128, 0, 0, 1)">" } --&gt;&gt; { <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">name<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">woQAv99Pq1FVoMX<span style="color: rgba(128, 0, 0, 1)">" } on : shard0002 Timestamp(<span style="color: rgba(128, 0, 128, 1)">3, <span style="color: rgba(128, 0, 128, 1)">4<span style="color: rgba(0, 0, 0, 1)">)
            { <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">name<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">woQAv99Pq1FVoMX<span style="color: rgba(128, 0, 0, 1)">" } --&gt;&gt; { <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">name<span style="color: rgba(128, 0, 0, 1)">" : { <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">$maxKey<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 128, 1)">1 } } on : shard0000 Timestamp(<span style="color: rgba(128, 0, 128, 1)">5, <span style="color: rgba(128, 0, 128, 1)">1<span style="color: rgba(0, 0, 0, 1)">)
    {<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">_id<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">abc<span style="color: rgba(128, 0, 0, 1)">",<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">partitioned<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(0, 0, 255, 1)">false,<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">primary<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">shard0000<span style="color: rgba(128, 0, 0, 1)">" }<strong> #未设置分片</strong></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></pre>
<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy"><img src="https://common.cnblogs.com/images/copycode.gif" alt="复制代码"></span></div>
</div>
<p><span style="font-size: 14px">上面加粗部分表示副本集分片已经成功加入,并且<span style="color: rgba(255, 0, 0, 1)"><strong>新加入的分片会分到已有的分片数据</strong>。</span></span></p>
<div class="cnblogs_code">
<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy"><img src="https://common.cnblogs.com/images/copycode.gif" alt="复制代码"></span></div>
<pre>mongos&gt;<span style="color: rgba(0, 0, 0, 1)"> db.account.stats()
...
...
    <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">shards<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(0, 0, 0, 1)"> : {
      <strong><span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">mmm<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(0, 0, 0, 1)"> : {
            <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">ns<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">dba.account<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(0, 0, 0, 1)">,
            <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">count<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 128, 1)">7723<span style="color: rgba(0, 0, 0, 1)">,      #后加入的分片得到了数据
            <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">size<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 128, 1)">741408<span style="color: rgba(0, 0, 0, 1)">,
            </span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></strong><span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">avgObjSize<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 128, 1)">96<span style="color: rgba(0, 0, 0, 1)">,
            <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">storageSize<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 128, 1)">2793472<span style="color: rgba(0, 0, 0, 1)">,
            <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">numExtents<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 128, 1)">5<span style="color: rgba(0, 0, 0, 1)">,
            <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">nindexes<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 128, 1)">2<span style="color: rgba(0, 0, 0, 1)">,
            <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">lastExtentSize<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 128, 1)">2097152<span style="color: rgba(0, 0, 0, 1)">,
            <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">paddingFactor<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 128, 1)">1<span style="color: rgba(0, 0, 0, 1)">,
            <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">systemFlags<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 128, 1)">1<span style="color: rgba(0, 0, 0, 1)">,
            <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">userFlags<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 128, 1)">0<span style="color: rgba(0, 0, 0, 1)">,
            <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">totalIndexSize<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 128, 1)">719488<span style="color: rgba(0, 0, 0, 1)">,
            <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">indexSizes<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(0, 0, 0, 1)"> : {
                <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">_id_<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 128, 1)">343392<span style="color: rgba(0, 0, 0, 1)">,
                <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">name_1<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 128, 1)">376096<span style="color: rgba(0, 0, 0, 1)">
            },
            <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">ok<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 128, 1)">1<span style="color: rgba(0, 0, 0, 1)">
      },
...
...</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></pre>
<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy"><img src="https://common.cnblogs.com/images/copycode.gif" alt="复制代码"></span></div>
</div>
<p><span style="font-size: 14px"><strong>2)</strong>继续用python脚本写数据,填充到副本集中<span style="line-height: 1.5">&nbsp;</span></span></p>
<p><span style="font-size: 14px">由于之前的副本集是比较老的版本(2.4),所以在写入副本集分片的时候报错:</span></p>
<div class="cnblogs_code">
<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy"><img src="https://common.cnblogs.com/images/copycode.gif" alt="复制代码"></span></div>
<pre>mongos&gt; db.account.insert({<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">name<span style="color: rgba(128, 0, 0, 1)">":<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">UavMbMlfsz1OFrz<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(0, 0, 0, 1)">})
WriteResult({
    <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">nInserted<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 128, 1)">0<span style="color: rgba(0, 0, 0, 1)">,
    <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">writeError<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(0, 0, 0, 1)"> : {
      <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">code<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 128, 1)">83<span style="color: rgba(0, 0, 0, 1)">,
      <strong><span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">errmsg<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">write results unavailable from 192.168.200.25:27017 :: caused by :: Location28563 cannot send batch write operation to server 192.168.200.25:27017 (192.168.200.25)<span style="color: rgba(128, 0, 0, 1)">"</span></span></span></span></span></span></strong><span style="color: rgba(0, 0, 0, 1)">
    }
})</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></pre>
<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy"><img src="https://common.cnblogs.com/images/copycode.gif" alt="复制代码"></span></div>
</div>
<p><span style="font-size: 14px">太混蛋了,错误提示不太人性化,搞了半天。所以说版本一致性还是很重要的。现在重新开了一个副本集:</span></p>
<div class="cnblogs_code"><img id="code_img_closed_217d26a5-15ce-44de-97ad-fe0e2dd5ac3c" class="code_img_closed" style="display: inline" src="https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif" alt=""> <span class="cnblogs_code_collapse" style="display: inline">View Code</span></div>
<p><span style="font-size: 14px">把之前的<strong>副本集分片删除</strong>了,如何删除见下面<strong>3)。</strong></span></p>
<p><span style="font-size: 14px">新的副本集加入分片中:</span></p>
<div class="cnblogs_code">
<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy"><img src="https://common.cnblogs.com/images/copycode.gif" alt="复制代码"></span></div>
<pre>mongos&gt; <strong><span style="color: rgba(0, 0, 255, 1)">sh.addShard(<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">mablevi/192.168.200.53:50000,192.168.200.53:50001,192.168.200.53:50002<span style="color: rgba(128, 0, 0, 1)">"</span></span></span></span></strong><span style="color: rgba(0, 0, 0, 1)"><strong>)</strong>
{ <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">shardAdded<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">mablevi<span style="color: rgba(128, 0, 0, 1)">", <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">ok<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 128, 1)">1<span style="color: rgba(0, 0, 0, 1)"> }

mongos&gt; <span style="color: rgba(0, 0, 255, 1)">sh<span style="color: rgba(0, 0, 0, 1)">.status()
--- Sharding Status ---<span style="color: rgba(0, 0, 0, 1)">
...
...
shards:
    {<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">_id<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<strong><span style="color: rgba(128, 0, 0, 1)">mablevi</span></strong><span style="color: rgba(128, 0, 0, 1)">",<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">host<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">mablevi/192.168.200.53:50000,192.168.200.53:50001,192.168.200.53:50002<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(0, 0, 0, 1)"> }
    {<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">_id<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">shard0000<span style="color: rgba(128, 0, 0, 1)">",<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">host<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">192.168.200.51:40000<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(0, 0, 0, 1)"> }
    {<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">_id<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">shard0001<span style="color: rgba(128, 0, 0, 1)">",<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">host<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">192.168.200.52:40000<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(0, 0, 0, 1)"> }
    {<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">_id<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">shard0002<span style="color: rgba(128, 0, 0, 1)">",<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">host<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">192.168.200.53:40000<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(0, 0, 0, 1)"> }
...
...
      dba.account
            shard key: { <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">name<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 128, 1)">1<span style="color: rgba(0, 0, 0, 1)"> }
            chunks:
                <strong>mablevi    </strong><span style="color: rgba(128, 0, 128, 1)">1<span style="color: rgba(0, 0, 0, 1)">
                shard0000    <span style="color: rgba(128, 0, 128, 1)">1<span style="color: rgba(0, 0, 0, 1)">
                shard0001    <span style="color: rgba(128, 0, 128, 1)">1<span style="color: rgba(0, 0, 0, 1)">
                shard0002    <span style="color: rgba(128, 0, 128, 1)">2<span style="color: rgba(0, 0, 0, 1)">
            { <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">name<span style="color: rgba(128, 0, 0, 1)">" : { <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">$minKey<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 128, 1)">1 } } --&gt;&gt; { <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">name<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">5yyfY8mmR5HyhGJ<span style="color: rgba(128, 0, 0, 1)">" } on : shard0001 Timestamp(<span style="color: rgba(128, 0, 128, 1)">2, <span style="color: rgba(128, 0, 128, 1)">0<span style="color: rgba(0, 0, 0, 1)">)
         <strong> { </strong><strong><span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">name<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">5yyfY8mmR5HyhGJ<span style="color: rgba(128, 0, 0, 1)">" } --&gt;&gt; { <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">name<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">UavMbMlfszZOFrz<span style="color: rgba(128, 0, 0, 1)">" } on : mablevi Timestamp(<span style="color: rgba(128, 0, 128, 1)">9, <span style="color: rgba(128, 0, 128, 1)">0</span></span></span></span></span></span></span></span></span></span></span></span></span></span></strong><span style="color: rgba(0, 0, 0, 1)"><strong>)</strong> <strong>#新加入的分片得到数据</strong>
            { <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">name<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">UavMbMlfszZOFrz<span style="color: rgba(128, 0, 0, 1)">" } --&gt;&gt; { <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">name<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">t9LyVSNXDmf6esP<span style="color: rgba(128, 0, 0, 1)">" } on : shard0002 Timestamp(<span style="color: rgba(128, 0, 128, 1)">4, <span style="color: rgba(128, 0, 128, 1)">1<span style="color: rgba(0, 0, 0, 1)">)
            { <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">name<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">t9LyVSNXDmf6esP<span style="color: rgba(128, 0, 0, 1)">" } --&gt;&gt; { <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">name<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">woQAv99Pq1FVoMX<span style="color: rgba(128, 0, 0, 1)">" } on : shard0002 Timestamp(<span style="color: rgba(128, 0, 128, 1)">3, <span style="color: rgba(128, 0, 128, 1)">4<span style="color: rgba(0, 0, 0, 1)">)
            { <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">name<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">woQAv99Pq1FVoMX<span style="color: rgba(128, 0, 0, 1)">" } --&gt;&gt; { <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">name<span style="color: rgba(128, 0, 0, 1)">" : { <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">$maxKey<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 128, 1)">1 } } on : shard0000 Timestamp(<span style="color: rgba(128, 0, 128, 1)">9, <span style="color: rgba(128, 0, 128, 1)">1<span style="color: rgba(0, 0, 0, 1)">)
    {<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">_id<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">abc<span style="color: rgba(128, 0, 0, 1)">",<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">partitioned<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(0, 0, 255, 1)">false,<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">primary<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">shard0000<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(0, 0, 0, 1)"> }
    {<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">_id<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">mablevi<span style="color: rgba(128, 0, 0, 1)">",<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">partitioned<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(0, 0, 255, 1)">false,<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">primary<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">shard0001<span style="color: rgba(128, 0, 0, 1)">" }</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></pre>
<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy"><img src="https://common.cnblogs.com/images/copycode.gif" alt="复制代码"></span></div>
</div>
<p><span style="font-size: 14px">继续用python写入操作:</span></p>
<div class="cnblogs_code">
<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy"><img src="https://common.cnblogs.com/images/copycode.gif" alt="复制代码"></span></div>
<pre>mongos&gt;<span style="color: rgba(0, 0, 0, 1)"> db.account.stats()
{
<span style="color: rgba(0, 0, 0, 1)">...<br>...
    <strong><span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">shards<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(0, 0, 0, 1)"> : {
      <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">mablevi<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(0, 0, 0, 1)"> : {
            <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">ns<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">dba.account<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(0, 0, 0, 1)">,
            <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">count<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 128, 1)">47240<span style="color: rgba(0, 0, 0, 1)">,
            <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">size<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 128, 1)">5290880<span style="color: rgba(0, 0, 0, 1)">,</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></strong><span style="color: rgba(0, 0, 0, 1)">
...<br>...</span></span></span></pre>
<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy"><img src="https://common.cnblogs.com/images/copycode.gif" alt="复制代码"></span></div>
</div>
<p><span style="font-size: 14px">副本集的分片被写入了47240条记录。此时把副本集分片的Primary shutdown掉,再查看:</span></p>
<div class="cnblogs_code">
<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy"><img src="https://common.cnblogs.com/images/copycode.gif" alt="复制代码"></span></div>
<pre>mongos&gt;<span style="color: rgba(0, 0, 0, 1)"> db.account.stats()
{
    <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">sharded<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(0, 0, 255, 1)">true<span style="color: rgba(0, 0, 0, 1)">,
    <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">code<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 128, 1)">13639<span style="color: rgba(0, 0, 0, 1)">,
    <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">ok<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 128, 1)">0<span style="color: rgba(0, 0, 0, 1)">,
    <strong><span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">errmsg<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">exception: can't connect to new replica set master , err: couldn't connect to server 192.168.200.53:50000 (192.168.200.53), connection attempt failed<span style="color: rgba(128, 0, 0, 1)">" <span style="color: rgba(255, 0, 0, 1)"> #由于副本集的Primary被shutdown之后,选举新主还是要几秒的时间,期间数据不能访问,导致分片数据也不能访问</span></span></span></span></span></span></span></strong><span style="color: rgba(0, 0, 0, 1)">
}
mongos&gt;<span style="color: rgba(0, 0, 0, 1)"> db.account.stats()
...
...
    <strong><span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">shards<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(0, 0, 0, 1)"> : {
      <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">mablevi<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(0, 0, 0, 1)"> : {
            <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">ns<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">dba.account<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(0, 0, 0, 1)">,
            <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">count<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 128, 1)">47240<span style="color: rgba(0, 0, 0, 1)">,      <span style="color: rgba(255, 0, 0, 1)"> #副本集新主选举完毕之后,分片数据访问正常。数据没有丢失,高可用得到了实现。
            <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">size<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 128, 1)">5290880<span style="color: rgba(0, 0, 0, 1)">,</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></strong><span style="color: rgba(0, 0, 0, 1)">
...
...</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></pre>
<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy"><img src="https://common.cnblogs.com/images/copycode.gif" alt="复制代码"></span></div>
</div>
<p><span style="color: rgba(255, 0, 0, 1)"><span style="font-size: 14px">要是让副本集分片只剩下一台(Secondary),则分片会报错:&nbsp;</span></span></p>
<div class="cnblogs_code">
<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy"><img src="https://common.cnblogs.com/images/copycode.gif" alt="复制代码"></span></div>
<pre>mongos&gt;<span style="color: rgba(0, 0, 0, 1)"> db.account.stats()
{
    <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">sharded<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(0, 0, 255, 1)">true<span style="color: rgba(0, 0, 0, 1)">,
    <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">code<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 128, 1)">10009<span style="color: rgba(0, 0, 0, 1)">,
    <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">ok<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 128, 1)">0<span style="color: rgba(0, 0, 0, 1)">,
    <strong><span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">errmsg<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">exception: ReplicaSetMonitor no master found for set: mablevi<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(0, 0, 0, 1)"> #数据不能访问</span></span></span></span></span></span></span></strong><span style="color: rgba(0, 0, 0, 1)">
}</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></pre>
<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy"><img src="https://common.cnblogs.com/images/copycode.gif" alt="复制代码"></span></div>
</div>
<p><span style="font-size: 14px"><strong>3)删除分片:&nbsp;db.runCommand({"removeshard":"mmm"})</strong></span></p>
<p><span style="font-size: 14px">要是觉得分片太多了,想删除,则:</span></p>
<div class="cnblogs_code">
<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy"><img src="https://common.cnblogs.com/images/copycode.gif" alt="复制代码"></span></div>
<pre>mongos&gt;<span style="color: rgba(0, 0, 0, 1)"><strong> use admin   #需要到admin下面删除</strong>
switched to db admin
mongos&gt; db.runCommand({<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">removeshard<span style="color: rgba(128, 0, 0, 1)">":<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">mmm<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(0, 0, 0, 1)">})
{
    <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">msg<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">draining started successfully<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(0, 0, 0, 1)">,
    <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">state<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<strong><span style="color: rgba(128, 0, 0, 1)">started</span></strong><span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(0, 0, 0, 1)">,   <strong>#开始删除,数据正在转移
    </strong><span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">shard<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">mmm<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(0, 0, 0, 1)">,
    <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">ok<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 128, 1)">1<span style="color: rgba(0, 0, 0, 1)">
}
mongos&gt; <span style="color: rgba(0, 0, 255, 1)">sh<span style="color: rgba(0, 0, 0, 1)">.status()
--- Sharding Status ---<span style="color: rgba(0, 0, 0, 1)">...<br>...
shards:
    {<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">_id<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">mmm<span style="color: rgba(128, 0, 0, 1)">",<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">host<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">mmm/192.168.200.245:27017,192.168.200.245:37017,192.168.200.25:27017<span style="color: rgba(128, 0, 0, 1)">",<span style="color: rgba(128, 0, 0, 1)">"<strong><span style="color: rgba(128, 0, 0, 1)">draining</span></strong><span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(0, 0, 255, 1)">true<span style="color: rgba(0, 0, 0, 1)"> } <strong> #删除的分片数据移动到其他分片</strong>
    {<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">_id<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">shard0000<span style="color: rgba(128, 0, 0, 1)">",<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">host<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">192.168.200.51:40000<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(0, 0, 0, 1)"> }
    {<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">_id<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">shard0001<span style="color: rgba(128, 0, 0, 1)">",<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">host<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">192.168.200.52:40000<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(0, 0, 0, 1)"> }
    {<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">_id<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">shard0002<span style="color: rgba(128, 0, 0, 1)">",<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">host<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">192.168.200.53:40000<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(0, 0, 0, 1)"> }
<span style="color: rgba(0, 0, 0, 1)">...<br>...
databases:
    {<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">_id<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">admin<span style="color: rgba(128, 0, 0, 1)">",<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">partitioned<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(0, 0, 255, 1)">false,<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">primary<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">config<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(0, 0, 0, 1)"> }
    {<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">_id<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">test<span style="color: rgba(128, 0, 0, 1)">",<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">partitioned<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(0, 0, 255, 1)">false,<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">primary<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">shard0000<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(0, 0, 0, 1)"> }
    {<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">_id<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">dba<span style="color: rgba(128, 0, 0, 1)">",<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">partitioned<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(0, 0, 255, 1)">true,<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">primary<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">shard0000<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(0, 0, 0, 1)"> }
      dba.account
            shard key: { <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">name<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 128, 1)">1<span style="color: rgba(0, 0, 0, 1)"> }
            chunks:
                shard0000    <span style="color: rgba(128, 0, 128, 1)">2<span style="color: rgba(0, 0, 0, 1)">
                shard0001    <span style="color: rgba(128, 0, 128, 1)">1<span style="color: rgba(0, 0, 0, 1)">
                shard0002    <span style="color: rgba(128, 0, 128, 1)">2<span style="color: rgba(0, 0, 0, 1)">
            { <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">name<span style="color: rgba(128, 0, 0, 1)">" : { <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">$minKey<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 128, 1)">1 } } --&gt;&gt; { <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">name<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">5yyfY8mmR5HyhGJ<span style="color: rgba(128, 0, 0, 1)">" } on : shard0001 Timestamp(<span style="color: rgba(128, 0, 128, 1)">2, <span style="color: rgba(128, 0, 128, 1)">0<span style="color: rgba(0, 0, 0, 1)">)
            { <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">name<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">5yyfY8mmR5HyhGJ<span style="color: rgba(128, 0, 0, 1)">" } --&gt;&gt; { <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">name<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">UavMbMlfszZOFrz<span style="color: rgba(128, 0, 0, 1)">" } on : shard0000 Timestamp(<span style="color: rgba(128, 0, 128, 1)">8, <span style="color: rgba(128, 0, 128, 1)">0<span style="color: rgba(0, 0, 0, 1)">)
            { <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">name<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">UavMbMlfszZOFrz<span style="color: rgba(128, 0, 0, 1)">" } --&gt;&gt; { <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">name<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">t9LyVSNXDmf6esP<span style="color: rgba(128, 0, 0, 1)">" } on : shard0002 Timestamp(<span style="color: rgba(128, 0, 128, 1)">4, <span style="color: rgba(128, 0, 128, 1)">1<span style="color: rgba(0, 0, 0, 1)">) <strong>#这里已经没有了被删除分片信息</strong>
            { <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">name<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">t9LyVSNXDmf6esP<span style="color: rgba(128, 0, 0, 1)">" } --&gt;&gt; { <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">name<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">woQAv99Pq1FVoMX<span style="color: rgba(128, 0, 0, 1)">" } on : shard0002 Timestamp(<span style="color: rgba(128, 0, 128, 1)">3, <span style="color: rgba(128, 0, 128, 1)">4<span style="color: rgba(0, 0, 0, 1)">)
            { <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">name<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">woQAv99Pq1FVoMX<span style="color: rgba(128, 0, 0, 1)">" } --&gt;&gt; { <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">name<span style="color: rgba(128, 0, 0, 1)">" : { <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">$maxKey<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 128, 1)">1 } } on : shard0000 Timestamp(<span style="color: rgba(128, 0, 128, 1)">7, <span style="color: rgba(128, 0, 128, 1)">1<span style="color: rgba(0, 0, 0, 1)">)
    {<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">_id<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">abc<span style="color: rgba(128, 0, 0, 1)">",<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">partitioned<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(0, 0, 255, 1)">false,<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">primary<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">shard0000<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(0, 0, 0, 1)"> }
    {<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">_id<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">mablevi<span style="color: rgba(128, 0, 0, 1)">",<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">partitioned<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(0, 0, 255, 1)">false,<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">primary<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">shard0001<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(0, 0, 0, 1)"> }

mongos&gt;<strong> db.runCommand({<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">removeshard<span style="color: rgba(128, 0, 0, 1)">":<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">mmm<span style="color: rgba(128, 0, 0, 1)">"</span></span></span></span></span></span></strong><span style="color: rgba(0, 0, 0, 1)"><strong>})   #再次执行,直到执行成功,要是原来分片的数据比较大,这里比较费时,要是一个主分片则需要执行movePrimary</strong>
{
    <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">msg<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">removeshard completed successfully<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(0, 0, 0, 1)">,
    <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">state<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<strong><span style="color: rgba(128, 0, 0, 1)">completed</span></strong><span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(0, 0, 0, 1)">, <strong> #完成删除
    </strong><span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">shard<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">mmm<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(0, 0, 0, 1)">,
    <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">ok<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 128, 1)">1<span style="color: rgba(0, 0, 0, 1)">
}
mongos&gt; <span style="color: rgba(0, 0, 255, 1)">sh<span style="color: rgba(0, 0, 0, 1)">.status()
--- Sharding Status ---<span style="color: rgba(0, 0, 0, 1)">...
<strong>shards</strong>:   <strong>#分片消失</strong>
    {<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">_id<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">shard0000<span style="color: rgba(128, 0, 0, 1)">",<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">host<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">192.168.200.51:40000<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(0, 0, 0, 1)"> }
    {<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">_id<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">shard0001<span style="color: rgba(128, 0, 0, 1)">",<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">host<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">192.168.200.52:40000<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(0, 0, 0, 1)"> }
    {<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">_id<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">shard0002<span style="color: rgba(128, 0, 0, 1)">",<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">host<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">192.168.200.53:40000<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(0, 0, 0, 1)"> }
<span style="color: rgba(0, 0, 0, 1)">...<br>...
            { <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">name<span style="color: rgba(128, 0, 0, 1)">" : { <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">$minKey<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 128, 1)">1 } } --&gt;&gt; { <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">name<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">5yyfY8mmR5HyhGJ<span style="color: rgba(128, 0, 0, 1)">" } on : shard0001 Timestamp(<span style="color: rgba(128, 0, 128, 1)">2, <span style="color: rgba(128, 0, 128, 1)">0<span style="color: rgba(0, 0, 0, 1)">)
            { <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">name<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">5yyfY8mmR5HyhGJ<span style="color: rgba(128, 0, 0, 1)">" } --&gt;&gt; { <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">name<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">UavMbMlfszZOFrz<span style="color: rgba(128, 0, 0, 1)">" } on : shard0000 Timestamp(<span style="color: rgba(128, 0, 128, 1)">8, <span style="color: rgba(128, 0, 128, 1)">0<span style="color: rgba(0, 0, 0, 1)">)
            { <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">name<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">UavMbMlfszZOFrz<span style="color: rgba(128, 0, 0, 1)">" } --&gt;&gt; { <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">name<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">t9LyVSNXDmf6esP<span style="color: rgba(128, 0, 0, 1)">" } on : shard0002 Timestamp(<span style="color: rgba(128, 0, 128, 1)">4, <span style="color: rgba(128, 0, 128, 1)">1<span style="color: rgba(0, 0, 0, 1)">) <strong>#已经没有了被删除分片的信息</strong>
            { <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">name<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">t9LyVSNXDmf6esP<span style="color: rgba(128, 0, 0, 1)">" } --&gt;&gt; { <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">name<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">woQAv99Pq1FVoMX<span style="color: rgba(128, 0, 0, 1)">" } on : shard0002 Timestamp(<span style="color: rgba(128, 0, 128, 1)">3, <span style="color: rgba(128, 0, 128, 1)">4<span style="color: rgba(0, 0, 0, 1)">)
            { <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">name<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">woQAv99Pq1FVoMX<span style="color: rgba(128, 0, 0, 1)">" } --&gt;&gt; { <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">name<span style="color: rgba(128, 0, 0, 1)">" : { <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">$maxKey<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 128, 1)">1 } } on : shard0000 Timestamp(<span style="color: rgba(128, 0, 128, 1)">7, <span style="color: rgba(128, 0, 128, 1)">1<span style="color: rgba(0, 0, 0, 1)">)
    {<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">_id<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">abc<span style="color: rgba(128, 0, 0, 1)">",<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">partitioned<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(0, 0, 255, 1)">false,<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">primary<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">shard0000<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(0, 0, 0, 1)"> }
    {<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">_id<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">mablevi<span style="color: rgba(128, 0, 0, 1)">",<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">partitioned<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(0, 0, 255, 1)">false,<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">primary<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">shard0001<span style="color: rgba(128, 0, 0, 1)">" }</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></pre>
<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy"><img src="https://common.cnblogs.com/images/copycode.gif" alt="复制代码"></span></div>
</div>
<p><span style="font-size: 14px; color: rgba(255, 0, 0, 1)">分片被删除之后,数据被移到其他分片中,不会丢失。要是想让<strong>主分片进行转移</strong>则(<strong>movePrimary</strong>):</span></p>
<div class="cnblogs_code">
<pre>mongos&gt; db.adminCommand({<span style="color: rgba(128, 0, 0, 1)">"<strong><span style="color: rgba(128, 0, 0, 1)">movePrimary</span></strong><span style="color: rgba(128, 0, 0, 1)">":<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">test<span style="color: rgba(128, 0, 0, 1)">",<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">to<span style="color: rgba(128, 0, 0, 1)">":<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">shard0001<span style="color: rgba(128, 0, 0, 1)">"}) <strong>#把test的主分片从shard0000迁移到shard0001</strong><span style="font-size: 14px; color: rgba(255, 0, 0, 1)">&nbsp;</span></span></span></span></span></span></span></span></span></span></span></span></pre>
</div>
<p><strong><span style="font-size: 14px">刷新下配置服务器:db.adminCommand({"flushRouterConfig":1})</span></strong></p>
<div class="cnblogs_code">
<pre><strong>db.adminCommand({<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">flushRouterConfig<span style="color: rgba(128, 0, 0, 1)">":<span style="color: rgba(128, 0, 128, 1)">1})</span></span></span></span></strong></pre>
</div>
<p><span style="font-size: 14px">最后来查看下<strong>分片成员:db.runCommand({ listshards : 1 })</strong></span></p>
<div class="cnblogs_code">
<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy"><img src="https://common.cnblogs.com/images/copycode.gif" alt="复制代码"></span></div>
<pre>mongos&gt;<span style="color: rgba(0, 0, 0, 1)"> use admin <strong> #需要进入admin才能执行</strong>
switched to db admin
mongos&gt; <strong>db.runCommand({ listshards : <span style="color: rgba(128, 0, 128, 1)">1</span></strong><span style="color: rgba(0, 0, 0, 1)"><strong> })</strong>
{
    <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">shards<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(0, 0, 0, 1)"> : [
      {
            <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">_id<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">shard0000<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(0, 0, 0, 1)">,
            <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">host<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">192.168.200.51:40000<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(0, 0, 0, 1)">
      },
      {
            <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">_id<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">shard0001<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(0, 0, 0, 1)">,
            <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">host<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">192.168.200.52:40000<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(0, 0, 0, 1)">
      },
      {
            <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">_id<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">shard0002<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(0, 0, 0, 1)">,
            <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">host<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">192.168.200.53:40000<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(0, 0, 0, 1)">
      },
      {
            <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">_id<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">mablevi<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(0, 0, 0, 1)">,
            <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">host<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">mablevi/192.168.200.53:50000,192.168.200.53:50001,192.168.200.53:50002<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(0, 0, 0, 1)">
      }
    ],
    <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">ok<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 128, 1)">1<span style="color: rgba(0, 0, 0, 1)">
}</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></pre>
<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy"><img src="https://common.cnblogs.com/images/copycode.gif" alt="复制代码"></span></div>
</div>
<p><span style="font-size: 14px">到此已经把MongoDB分片原理、搭建、应用大致已经介绍完。</span></p>
<p><strong><span style="font-size: 16px">六、认证分配</span></strong></p>
<p><span style="font-size: 16px"><span style="font-size: 14px">&nbsp; &nbsp; &nbsp; 上面的所有操作都是在无账号密码下进行的,这样是不安全的,那如何使用账号密码呢?和副本级一样,需要添加<strong>KeyFile</strong>参数,但是针对上面的三个角色(config、mongos、mongod)账号密码怎么添加呢?官网上已经做了说明:http://docs.mongodb.org/manual/tutorial/enable-authentication-in-sharded-cluster/。下面就对有<span style="color: rgba(255, 0, 0, 1)"><strong>账号密码认证分片进行相关设置说明</strong>。<strong><span style="font-size: 16px"><br></span></strong></span></span></span></p>
<p><span style="font-size: 16px"><span style="font-size: 14px">首先要创建账号(Root角色)和生成一个<strong>KeyFile</strong>文件<strong>,</strong>其中mongos 不需要创建账号。</span></span></p>
<div class="cnblogs_code">
<pre>openssl rand -base64 <span style="color: rgba(128, 0, 128, 1)">741 &gt; mongodb-<span style="color: rgba(0, 0, 0, 1)">keyfile
<span style="color: rgba(0, 0, 255, 1)">chmod <span style="color: rgba(128, 0, 128, 1)">600 mongodb-keyfile</span></span></span></span></pre>
</div>
<p><span style="font-size: 14px">其实这个文件也可以直接用明文,只要保证各个地方指定的文件是同一个就可以了。</span></p>
<p><span style="font-size: 14px"><strong>1)</strong>mongd: 首先在mongod角色的分片成员上生成key file文件,特别注意的是有副本级的分片,再把这个文件分别复制到其他角色的服务器上。再添加参数:</span></p>
<div class="cnblogs_code">
<pre>auth = <span style="color: rgba(0, 0, 255, 1)">true<span style="color: rgba(0, 0, 0, 1)">
keyFile = /usr/local/mongodb-keyfile</span></span></pre>
</div>
<p><span style="font-size: 14px"><strong>2)</strong>Config上添加参数:</span></p>
<div class="cnblogs_code">
<pre>auth = <span style="color: rgba(0, 0, 255, 1)">true<span style="color: rgba(0, 0, 0, 1)">
keyFile = /usr/local/mongodb-keyfile</span></span></pre>
</div>
<p><span style="font-size: 14px"><strong>3)</strong>mongos上添加参数,因为mongos本来就是从config里加载数据的,所以只需要添加keyfile文件即可,不需要找上面createUser。</span></p>
<div class="cnblogs_code">
<pre>keyFile = /usr/local/mongodb-keyfile</pre>
</div>
<p><span style="font-size: 14px">最后重启各个服务,再进入mongos里查看:</span></p>
<div class="cnblogs_code">
<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy"><img src="https://common.cnblogs.com/images/copycode.gif" alt="复制代码"></span></div>
<pre>root@mongo1:/usr/local# mongo --port=<span style="color: rgba(128, 0, 128, 1)">30000<span style="color: rgba(0, 0, 0, 1)">
MongoDB shell version: <span style="color: rgba(128, 0, 128, 1)">3.0.<span style="color: rgba(128, 0, 128, 1)">4<span style="color: rgba(0, 0, 0, 1)">
connecting to: <span style="color: rgba(128, 0, 128, 1)">127.0.<span style="color: rgba(128, 0, 128, 1)">0.1:<span style="color: rgba(128, 0, 128, 1)">30000/<span style="color: rgba(0, 0, 0, 1)">test
mongos&gt; <strong><span style="color: rgba(0, 0, 255, 1)">sh</span></strong><span style="color: rgba(0, 0, 0, 1)"><strong>.status()</strong>      <strong>#没有认证,没有权限报错。
</strong><span style="color: rgba(128, 0, 128, 1)">2015-<span style="color: rgba(128, 0, 128, 1)">07-14T23:<span style="color: rgba(128, 0, 128, 1)">42:<span style="color: rgba(128, 0, 128, 1)">11.800+<span style="color: rgba(128, 0, 128, 1)">0800 E QUERY    Error: error: { <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">$err<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">not authorized for query on config.version<span style="color: rgba(128, 0, 0, 1)">", <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">code<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 128, 1)">13<span style="color: rgba(0, 0, 0, 1)"> }
    at Error (&lt;anonymous&gt;<span style="color: rgba(0, 0, 0, 1)">)
    at DBQuery.next (src/mongo/shell/query.js:<span style="color: rgba(128, 0, 128, 1)">259:<span style="color: rgba(128, 0, 128, 1)">15<span style="color: rgba(0, 0, 0, 1)">)
    at DBCollection.findOne (src/mongo/shell/collection.js:<span style="color: rgba(128, 0, 128, 1)">189:<span style="color: rgba(128, 0, 128, 1)">22<span style="color: rgba(0, 0, 0, 1)">)
    at printShardingStatus (src/mongo/shell/shardingtest.js:<span style="color: rgba(128, 0, 128, 1)">659:<span style="color: rgba(128, 0, 128, 1)">55<span style="color: rgba(0, 0, 0, 1)">)
    at Function.<span style="color: rgba(0, 0, 255, 1)">sh.status (src/mongo/shell/utils_sh.js:<span style="color: rgba(128, 0, 128, 1)">60:<span style="color: rgba(128, 0, 128, 1)">5<span style="color: rgba(0, 0, 0, 1)">)
    at (shell):<span style="color: rgba(128, 0, 128, 1)">1:<span style="color: rgba(128, 0, 128, 1)">4 at src/mongo/shell/query.js:<span style="color: rgba(128, 0, 128, 1)">259<span style="color: rgba(0, 0, 0, 1)">
mongos&gt;<span style="color: rgba(0, 0, 0, 1)"> use admin
switched to db admin
mongos&gt; db.auth(<span style="color: rgba(128, 0, 0, 1)">'<span style="color: rgba(128, 0, 0, 1)">dba<span style="color: rgba(128, 0, 0, 1)">',<span style="color: rgba(128, 0, 0, 1)">'<span style="color: rgba(128, 0, 0, 1)">dba<span style="color: rgba(128, 0, 0, 1)">'<span style="color: rgba(0, 0, 0, 1)">)   <strong>#认证
</strong><span style="color: rgba(128, 0, 128, 1)">1<span style="color: rgba(0, 0, 0, 1)">
mongos&gt; <span style="color: rgba(0, 0, 255, 1)">sh<span style="color: rgba(0, 0, 0, 1)">.status()            <strong>#有权限
</strong>--- Sharding Status ---<span style="color: rgba(0, 0, 0, 1)">
sharding version: {
    <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">_id<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 128, 1)">1<span style="color: rgba(0, 0, 0, 1)">,
    <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">minCompatibleVersion<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 128, 1)">5<span style="color: rgba(0, 0, 0, 1)">,
    <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">currentVersion<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 128, 1)">6<span style="color: rgba(0, 0, 0, 1)">,
    <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">clusterId<span style="color: rgba(128, 0, 0, 1)">" : ObjectId(<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">55a51ef18bd517d4acec5ef9<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(0, 0, 0, 1)">)
}
shards:
    {<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">_id<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">mablevi<span style="color: rgba(128, 0, 0, 1)">",<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">host<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">mablevi/192.168.200.53:50000,192.168.200.53:50001,192.168.200.53:50002<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(0, 0, 0, 1)"> }
    {<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">_id<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">shard0000<span style="color: rgba(128, 0, 0, 1)">",<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">host<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">192.168.200.51:40000<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(0, 0, 0, 1)"> }
    {<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">_id<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">shard0001<span style="color: rgba(128, 0, 0, 1)">",<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">host<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">192.168.200.52:40000<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(0, 0, 0, 1)"> }
    {<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">_id<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">shard0002<span style="color: rgba(128, 0, 0, 1)">",<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">host<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">192.168.200.53:40000<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(0, 0, 0, 1)"> }
balancer:<br>...<br>...
<span style="color: rgba(0, 0, 0, 1)">databases:
    {<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">_id<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">admin<span style="color: rgba(128, 0, 0, 1)">",<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">partitioned<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(0, 0, 255, 1)">false,<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">primary<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">config<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(0, 0, 0, 1)"> }
    {<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">_id<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">test<span style="color: rgba(128, 0, 0, 1)">",<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">partitioned<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(0, 0, 255, 1)">false,<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">primary<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">shard0000<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(0, 0, 0, 1)"> }
    {<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">_id<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">dba<span style="color: rgba(128, 0, 0, 1)">",<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">partitioned<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(0, 0, 255, 1)">true,<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">primary<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">shard0000<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(0, 0, 0, 1)"> }
      dba.account
            shard key: { <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">name<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 128, 1)">1<span style="color: rgba(0, 0, 0, 1)"> }
            chunks:
                mablevi    <span style="color: rgba(128, 0, 128, 1)">1<span style="color: rgba(0, 0, 0, 1)">
                shard0000    <span style="color: rgba(128, 0, 128, 1)">1<span style="color: rgba(0, 0, 0, 1)">
                shard0001    <span style="color: rgba(128, 0, 128, 1)">2<span style="color: rgba(0, 0, 0, 1)">
                shard0002    <span style="color: rgba(128, 0, 128, 1)">1<span style="color: rgba(0, 0, 0, 1)">
            { <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">name<span style="color: rgba(128, 0, 0, 1)">" : { <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">$minKey<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 128, 1)">1 } } --&gt;&gt; { <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">name<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">9XXqCaBhfhPIXLq<span style="color: rgba(128, 0, 0, 1)">" } on : mablevi Timestamp(<span style="color: rgba(128, 0, 128, 1)">2, <span style="color: rgba(128, 0, 128, 1)">0<span style="color: rgba(0, 0, 0, 1)">)
            { <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">name<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">9XXqCaBhfhPIXLq<span style="color: rgba(128, 0, 0, 1)">" } --&gt;&gt; { <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">name<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">RWINvgjYYQmbZds<span style="color: rgba(128, 0, 0, 1)">" } on : shard0002 Timestamp(<span style="color: rgba(128, 0, 128, 1)">4, <span style="color: rgba(128, 0, 128, 1)">0<span style="color: rgba(0, 0, 0, 1)">)
            { <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">name<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">RWINvgjYYQmbZds<span style="color: rgba(128, 0, 0, 1)">" } --&gt;&gt; { <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">name<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">jSPRBNH8rvnzblG<span style="color: rgba(128, 0, 0, 1)">" } on : shard0001 Timestamp(<span style="color: rgba(128, 0, 128, 1)">4, <span style="color: rgba(128, 0, 128, 1)">1<span style="color: rgba(0, 0, 0, 1)">)
            { <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">name<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">jSPRBNH8rvnzblG<span style="color: rgba(128, 0, 0, 1)">" } --&gt;&gt; { <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">name<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">okmjUUZuuKgftDC<span style="color: rgba(128, 0, 0, 1)">" } on : shard0001 Timestamp(<span style="color: rgba(128, 0, 128, 1)">3, <span style="color: rgba(128, 0, 128, 1)">4<span style="color: rgba(0, 0, 0, 1)">)
            { <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">name<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">okmjUUZuuKgftDC<span style="color: rgba(128, 0, 0, 1)">" } --&gt;&gt; { <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">name<span style="color: rgba(128, 0, 0, 1)">" : { <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">$maxKey<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 128, 1)">1 } } on : shard0000 Timestamp(<span style="color: rgba(128, 0, 128, 1)">3, <span style="color: rgba(128, 0, 128, 1)">1) </span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></pre>
<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy"><img src="https://common.cnblogs.com/images/copycode.gif" alt="复制代码"></span></div>
</div>
<p><span style="font-size: 16px"><strong>七、分片备份、还原</strong></span></p>
<p><span style="font-size: 16px"><span style="font-size: 14px">因为分片机制里面会有平衡器来迁移数据,所以各个分片里的数据很可能会移动,所以在<strong>备份分片时需要做:</strong></span></span></p>
<p><span style="font-size: 16px"><span style="font-size: 14px"><strong>①:</strong>先停止平衡器的工作,并检查没有chunk move动作,保证dump的时候没有进行数据迁移。</span></span></p>
<div class="cnblogs_code">
<pre>mongos&gt; <strong><span style="color: rgba(0, 0, 255, 1)">sh.stopBalancer()</span></strong></pre>
</div>
<p><span style="font-size: 14px"><strong>②:</strong>锁定数据库,保证数据没有写入:在各个分片上和配置服务器上执行。</span></p>
<div class="cnblogs_code">
<pre>&gt;<span style="color: rgba(0, 0, 0, 1)"><strong> db.fsyncLock()</strong>
{
    <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">info<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">now locked against writes, use db.fsyncUnlock() to unlock<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(0, 0, 0, 1)">,
    <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">seeAlso<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">http://dochub.mongodb.org/core/fsynccommand<span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(0, 0, 0, 1)">,
    <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">ok<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 128, 1)">1<span style="color: rgba(0, 0, 0, 1)">
}</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></pre>
</div>
<p><span style="font-size: 14px"><strong>③:</strong>执行备份操作,备份各个分片服务器和配置服务器。</span></p>
<div class="cnblogs_code">
<pre><strong>mongodump</strong> -udba -p12345 -d dba_test --authenticationDatabase admin -o backup/</pre>
</div>
<p><span style="font-size: 14px"><strong>④:</strong>解锁数据库,备份完成之后在分片和配置服务器上解锁数据库,允许修改。</span></p>
<div class="cnblogs_code">
<pre>&gt;<span style="color: rgba(0, 0, 0, 1)"> db.fsyncUnlock()
{ <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">ok<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 128, 1)">1, <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">info<span style="color: rgba(128, 0, 0, 1)">" : <span style="color: rgba(128, 0, 0, 1)">"<span style="color: rgba(128, 0, 0, 1)">unlock completed<span style="color: rgba(128, 0, 0, 1)">" }</span></span></span></span></span></span></span></span></span></span></span></pre>
</div>
<p><span style="font-size: 14px; line-height: 24px">当数据库出现问题,需要还原的时候,需要还原各个分片和配置服务器,并且重启MongoDB实例。还原数据库需要做:</span></p>
<p><span style="font-size: 14px; line-height: 24px"><strong>①:</strong>还原各个分片和配置服务器。</span></p>
<div class="cnblogs_code">
<pre><strong>mongorestore</strong> --host=<span style="color: rgba(128, 0, 128, 1)">127.0.<span style="color: rgba(128, 0, 128, 1)">0.1 --port=<span style="color: rgba(128, 0, 128, 1)">27017 -udba -p12345 -d dba_test --authenticationDatabase admin --drop backup/dba_test</span></span></span></pre>
</div>
<p><span style="font-size: 14px"><strong>②:</strong>重启各个实例</span></p>
<p><span style="font-size: 16px"><strong>总结:</strong></span></p>
<p>&nbsp; &nbsp; &nbsp; <span style="font-size: 14px">分片很好的解决了单台服务器磁盘空间、内存、cpu等硬件资源的限制问题,把数据水平拆分出去,降低单节点的访问压力。每个分片都是一个独立的数据库,所有的分片组合起来构成一个逻辑上的完整的数据库。因此,分片机制降低了每个分片的数据操作量及需要存储的数据量,达到多台服务器来应对不断增加的负载和数据的效果。后面文章还会继续对分片的其他方面进行说明介绍。</span></p>
<p>&nbsp;</p>
<p>&nbsp; https://www.cnblogs.com/zhoujinyi/p/4635444.html</p>
<p>&nbsp;</p>
<p><span style="font-size: 16px"><strong>参考文档:</strong></span></p>
<p><span style="font-size: 14px">说明:http://docs.mongodb.org/manual/core/sharding-introduction/</span></p>
<p><span style="font-size: 14px">配置:http://docs.mongodb.org/manual/tutorial/deploy-shard-cluster/</span></p>
<p>应用:http://www.caiyiting.com/blog/2014/replica-sets-sharding-realization.html</p><br><br>
来源:https://www.cnblogs.com/zping/p/11203545.html
頁: [1]
查看完整版本: MongoDB 分片的原理、搭建、应用 (转)